2017-01-09 8 views
0

В нашем приложении Angular 2 у нас есть много сервисов, которые мы загружаем как Провайдеры в NgModule, и особенно сервис, который проверяет экземпляр определенного компонента.Компонент не определен при загрузке Провайдеров

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

При загрузке SystemJS службы, он eveluates этого кода и Main не определен, так как служба загружается перед каждым компонентом. Есть идеи по этому поводу?

ответ

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