2017-02-22 6 views
0

Я использую ng2-toastr на своей странице и отлично работаю, но когда у меня есть вложенный компонент на странице, существующий ng2-toastr (ToastManager) область уничтожается, а toastr не работает.Угловая 2: Загрузка вложенного компонента разрушает существующий объем ng2-toastr

constructor(public toastr: ToastsManager,public vcr: ViewContainerRef) { 
     this.toastr.setRootViewContainerRef(vcr); 
} 

В Мой метод, когда я называю

this.toastr.warning('Its Warning','Alert'); 

Его работает нормально, но в моем HTML, когда я загружаю другой компонент, то есть

<es-app></es-app> 

toastr на моей странице не (Нет ошибок)

Иногда я получаю:

Attempt to use a destroyed view: detectChanges Error: Attempt to use a destroyed view: detectChanges at ViewDestroyedError

ответ

0

При инициализации контейнера внутри ngAfterViewInit решен вопрос

this.toastr.setRootViewContainerRef(vcr); 

вместо contsructor место в

ngAfterViewInit(){ 
this.toastr.setRootViewContainerRef(this.vcr); 
} 

Поскольку вложенные компоненты загружаются и уничтожить экземпляр страницы, поэтому мы должны загрузить после того, как все компоненты загружены и что происходит в ngAfterViewInit в соответствии с крючком жизненного цикла страницы