加载提供程序时未定义的组件

时间:2017-01-09 10:55:36

标签: angular systemjs angular2-services

在我们的Angular 2应用程序中,我们有许多服务,我们在NgModule中加载像Providers一样,尤其是检查某个组件实例的服务。

if (this.appRef.components[0].instance instanceof Main) {
    return <Main>this.appRef.components[0].instance;
}

当SystemJS加载服务时,它会产生此代码并且未定义Main,因为服务是在每个组件之前加载的。有关于此的任何想法吗?

1 个答案:

答案 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;
        }
    }
)