提交 a19a091a 编写于 作者: J Jason

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

监听路由,无对应标签,则需要新建标签(未实现)
上级 415ee7f4
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
</nz-header> </nz-header>
<nz-content> <nz-content>
<div class="inner-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> <nz-tab>
<a nz-tab-link routerLink="dash">Default</a> <a nz-tab-link routerLink="dash">Default</a>
Default. Default.
......
...@@ -58,23 +58,49 @@ export class MainComponent implements OnInit { ...@@ -58,23 +58,49 @@ export class MainComponent implements OnInit {
@ViewChild("container", {read: ViewContainerRef}) container: ViewContainerRef; @ViewChild("container", {read: ViewContainerRef}) container: ViewContainerRef;
constructor(private mqtt: MqttService, private router: Router, private resolver: ComponentFactoryResolver) { constructor(private mqtt: MqttService, private router: Router, private resolver: ComponentFactoryResolver) {
router.events.subscribe((e:any) => { router.events.subscribe((e: any) => {
console.log('router event', e) //console.log('router event', e)
if (this.container && this.container.createComponent // if (this.container && this.container.createComponent
&& e.snapshot && e.snapshot.component && e.snapshot.children.length==0) { // && e.snapshot && e.snapshot.component && e.snapshot.children.length == 0) {
//
const factory = resolver.resolveComponentFactory(e.snapshot.component); // const factory = resolver.resolveComponentFactory(e.snapshot.component);
this.container.clear(); // this.container.clear();
const ref = this.container.createComponent(factory); // const ref = this.container.createComponent(factory);
//TODO 第一次,container还未准备好 // //TODO 第一次,container还未准备好
//TODO 添加路由参数 // //TODO 添加路由参数
//TODO call ref.destroy() in ngOnDestroy // //TODO call ref.destroy() in ngOnDestroy
} //
//
// }
}); });
//TODO unsubscribe //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 { ngOnInit(): void {
this.mqtt.subscribe('/+/+/recv').subscribe(packet => { this.mqtt.subscribe('/+/+/recv').subscribe(packet => {
console.log('packet', packet); console.log('packet', packet);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册