我遇到了这个错误
ViewDestroyedError:尝试使用已销毁的视图:detectChanges
当我从事件中调用ChangeDetectorRef.DetectChanges()
时。我已经被困了近2天了,我无法理解。
好的,我已经创建了一个小样本来演示正在发生的事情。我们有3个不同的模块。在被叫shared.module.ts
时,其他两个人真的不重要,他们被称为crm.module.ts
和admin.module.ts
。
这里重要的是,SharedModule
在其提供者中有一个名为SidebarService
的内容。 SidebarService看起来像:
@Injectable()
export class SidebarService {
viewChanged:EventEmitter<any>=new EventEmitter<any>();
//other properties and methods here
viewClick(view:SidebarView):void{
this.selectedView = view;
this.viewChanged.emit(view);
}
}
现在在另外两个模块中,我有一个订阅此事件的主要组件。类似的东西:
ngOnInit():void{
this.sidebarService.selectedView = this.views[0];
this.sidebarService.views = this.views;
this.sidebarService.visible = true;
this.sidebarService.viewChanged.subscribe(view=>{
this.changeDetectorRef.detectChanges();
});
}
好的,现在对有趣的事情......当我切换到另一个模块的主视图时,只有当我在该模块中切换子视图时才会抛出此错误。
我尝试了什么......
我试过onDestroy()
这不起作用,我仍然收到错误。
我创建了一个能够重新创建的plnkr.co但由于某种原因它没有保存。如果这里有人需要,我会再次这样做。