在我们的Angular 2应用程序中,我们有许多服务,我们在NgModule
中加载像Providers一样,尤其是检查某个组件实例的服务。
if (this.appRef.components[0].instance instanceof Main) {
return <Main>this.appRef.components[0].instance;
}
当SystemJS加载服务时,它会产生此代码并且未定义Main
,因为服务是在每个组件之前加载的。有关于此的任何想法吗?
答案 0 :(得分:0)
也许你可以用这样的观察来做到这一点:
export class Component implements AfterViewInit {
public instanceSubject: Subject<any>;
ngAfterViewInit() {
instanceSubject.next(this.instance);
}
您服务中的订阅:
let mainInstance;
this.appRef.components[0].instanceSubject.asObservable().subscribe(
(instance) => {
if (instance instanceof Main) {
mainInstance= <Main>instance;
}
}
)