提交 a19a091a 编写于 作者: J Jason

监听标签切换,加载相关页面(未具体实现)

监听路由,无对应标签,则需要新建标签(未实现)
上级 415ee7f4
......@@ -32,7 +32,7 @@
</nz-header>
<nz-content>
<div class="inner-content">
<nz-tabset nzLinkRouter style="height: 100px;" nzType="card">
<nz-tabset nzLinkRouter style="height: 100px;" nzType="card" (nzSelectChange)="onTabsChange($event)">
<nz-tab>
<a nz-tab-link routerLink="dash">Default</a>
Default.
......
......@@ -58,23 +58,49 @@ export class MainComponent implements OnInit {
@ViewChild("container", {read: ViewContainerRef}) container: ViewContainerRef;
constructor(private mqtt: MqttService, private router: Router, private resolver: ComponentFactoryResolver) {
router.events.subscribe((e:any) => {
console.log('router event', e)
if (this.container && this.container.createComponent
&& e.snapshot && e.snapshot.component && e.snapshot.children.length==0) {
const factory = resolver.resolveComponentFactory(e.snapshot.component);
this.container.clear();
const ref = this.container.createComponent(factory);
//TODO 第一次,container还未准备好
//TODO 添加路由参数
//TODO call ref.destroy() in ngOnDestroy
}
router.events.subscribe((e: any) => {
//console.log('router event', e)
// if (this.container && this.container.createComponent
// && e.snapshot && e.snapshot.component && e.snapshot.children.length == 0) {
//
// const factory = resolver.resolveComponentFactory(e.snapshot.component);
// this.container.clear();
// const ref = this.container.createComponent(factory);
// //TODO 第一次,container还未准备好
// //TODO 添加路由参数
// //TODO call ref.destroy() in ngOnDestroy
//
//
// }
});
//TODO unsubscribe
}
tabs = [];
onTabsChange(e): void {
//TODO 实现标签页
// 1、打开对应标签,如果未加载组件,则解析路由,导入组件,已加载则忽略
// 2、路由切换,没有自动打开对应标签,可能情况:
// a、标签未创建或已经关闭,此时需要自动创建新标签,打开页面
// b、无效路由
//
//e.index
// this.router.routerState.snapshot.root.firstChild.firstChild.firstChild...
let route: any = this.router.routerState.snapshot.root;
while (route.firstChild) {
route = route.firstChild;
}
const factory = this.resolver.resolveComponentFactory(route.component);
this.container.clear();
const ref = this.container.createComponent(factory);
}
ngOnInit(): void {
this.mqtt.subscribe('/+/+/recv').subscribe(packet => {
console.log('packet', packet);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册