2017-02-22 59 views
0

我在我的頁面中使用了ng2-toastr並且工作正常,但是當我在頁面中有一個嵌套組件時,現有的ng2-toastr(ToastManager )作用域被破壞,toastr不起作用。Angular 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容器中

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

因爲嵌套組件加載和破壞頁面實例解決了這個問題

this.toastr.setRootViewContainerRef(vcr); 

代替contsructor的地方,所以我們需要加載在加載完所有組件併發生在ngAfterViewInit按頁生命週期鉤子