You can workaround circular dependencies by injecting Injector
instead of one of the services that cause the circular dependency
private payrollService:PayrollService;
constructor(/*private payrollService:PayrollService*/ injector:Injector) {
setTimeout(() => this.payrollService = injector.get(PayrollService));
}