大佬教程收集整理的这篇文章主要介绍了在onDestroy之前的Angular2分离视图?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个容器组件,它的一个子容器上有一个ViewContainerRef,用于动态加载视图.如果容器组件本身被破坏(在我的情况下由于父组件中的* ngFor指令),我想分离当前在ViewContainerRef中加载的视图并再次将它附加到另一个容器上.
事情是:在NgOnDestroy()生命周期钩子中,ViewContainerRef已被清除,因此所有视图都被销毁,不再分离.
@Component({ SELEctor: 'container-collection',directives: [Container],template: `<container *ngFor="let i of views"></container>` }) export class ContainerCollection { public views = []; @ViewChildren(Container) private containers: QueryList<Container>; private viewMap = new Map<Container,ViewRef>(); public ngOnChanges(changes: {[key: String]: SimpleChange]}): void { if(changes['views']) { //detach all views and remember which container had which view this.viewMap = new Map<Container,ViewRef>(); this.containers.forEach(container => { var view = container.viewContainer.detach(); if(view) this.viewMap.set(container,view); }); } } public ngAfterViewInit(): void { //insert the views again (into the appropriate containers) this.containers.changes.subscribe( () => { this.containers.forEach(container => { var view = this.viewMap.get(container); if(view) container.viewContainer.insert(view); }); }); } } @Component({ SELEctor: 'container',template: `<div #viewContainer></div>` }) export class Container { @ViewChild('viewContainer') public viewContainer; }
代码只是草稿,可能包含语法错误.但这个想法(对我有用)应该是清楚的.
Angular2团队会很好地添加一个LifeCycle钩子,它会被一个组件实际销毁之前调用. (例如ngBeforeDestroy())左右.
以上是大佬教程为你收集整理的在onDestroy之前的Angular2分离视图?全部内容,希望文章能够帮你解决在onDestroy之前的Angular2分离视图?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。