项目要求在既有的clever框架上实现动态的tab页加载,在tab页切换时能保持每个tab页的状态,也就是做了哪些修改神马的。
然而原有clever框架上的Tab页是静态的,最开始尝试了用 *ngIf控制tab的是否加载,但出现的问题是无论点击的顺序是什么,这些tab页全都保持了一致的顺序,很显然被毙掉了。
继续在网上找方法,因为现在用的这套clever是基于Bootstrap的,于是去看Bootstrap的文档,文档中给的动态加载Tab要是这样的:
这样的实现方式是说:每当你增加或者删除一个tab选项页,会执行一次*ngFor,重新加载一次所有的页,这就说明并不会保持状态,而且每点一个就全部加载一次所有数据,显然又会被毙掉了。
经历了一次次的折磨,在师哥的帮助下,写出了一种实现方式。最终的效果是这样的:
首先,改变了原来clever的路由组织结构,原来是appRouting下引各个一级Module,在各个一级模块的Routing下引各个二级Component,现在的做法是,在中间加了一个空组件,这里是filling组件,把所有路由引到这个空组件上去,这个空组件通过动态加载组件的方式加载每次点击tab页需要加载的组件。
这里的tabArray和activeIndex数组都是filling组件和full-layout组件共同维护的,full-layout组件是嵌套在clever最外层的框架。full-layout组件如下: