Angular 2:加载嵌套组件正在破坏ng2-toastr的现有范围

时间:2017-02-22 08:28:19

标签: angular toastr angular-toastr

我在我的页面中使用了ng2-toastr并且工作正常,但是当我在页面中有一个嵌套组件时,现有的ng2-toastr(ToastManager)范围被破坏并且toastr无效。

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

在我的方法中,当我打电话

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

它的工作正常,但在我加载其他组件时的html中,即

<es-app></es-app>

我页面中的toastr无效(无错误)

有时我会:

  

尝试使用已销毁的视图:detectChanges错误:尝试使用已销毁的视图:ViewDestroyedError中的detectChanges

1 个答案:

答案 0 :(得分:0)

通过初始化ngAfterViewInit内的容器解决了问题

this.toastr.setRootViewContainerRef(vcr);

而不是

中的contsructor
ngAfterViewInit(){
this.toastr.setRootViewContainerRef(this.vcr);
}

因为嵌套组件正在加载并销毁页面实例,所以我们必须在加载所有组件后加载,并且按照页面生命周期挂钩在ngAfterViewInit中发生