昨天我已经把一切都搞定了。今天,在我重新启动环境之后,我尝试注入的一项服务现在始终是null
。
这是我的顶级组件(app.component.ts):
@Component({
selector: 'priz-app',
moduleId: module.id,
templateUrl: './app.component.html',
directives: [ROUTER_DIRECTIVES, SecureRouterOutlet],
providers: [ROUTER_PROVIDERS, AuthenticationService]
})
该组件的模板包含:
<secure-outlet signin="Login" unauthorized="AccessDenied"></secure-outlet>
secure-outlet
实施如下:
@Directive({
selector: 'secure-outlet'
})
export class SecureRouterOutlet extends RouterOutlet {
@Input()
signin: string;
@Input()
unauthorized:string;
@Input()
nameAttr: string;
constructor(_elementRef: ElementRef, _loader: DynamicComponentLoader,
private parentRouter: Router,
private authService: AuthenticationService,
public injector: Injector) {
super(_elementRef, _loader, parentRouter, null);
}
...
在构造函数以及指令中的任何其他位置,authService
始终为null
。我尝试在主要组件中定义指令内AuthenticationService
的提供程序,即使在引导程序中,也没有任何作用。
我错过了什么?
谢谢,
答案 0 :(得分:2)
不要将providers: [ROUTER_PROVIDERS]
添加到组件,仅添加到bootstrap()
尝试提供与原始RouterOutlet
类相同的参数,并在其后面添加您自己的依赖项。
不确定这是否有帮助,但我认为不久前提到有一个奇怪的问题:
constructor(
_elementRef: ElementRef,
_loader: DynamicComponentLoader,
private parentRouter: Router,
@Attribute('name') nameAttr: string, // <= added
private authService: AuthenticationService,
public injector: Injector) {