我正在研究一个简单的组件,该组件将根据当前路线的模块更改数据。我不确定在哪里可以找到有关该模块的信息。
路由器
const routes: Routes = [
{
path: '',
loadChildren: () => import('@/app/homepage/homepage.module').then(m => m.HomepageModule)
},
{
path: 'search',
loadChildren: () => import('@/app/search/search.module').then(m => m.SearchModule)
}
];
AppComponent(root)
<div *ngIf="isHomepageModule; else otherModules">...</div>
<ng-template #otherModules>
<div>...</div>
</ng-template>
<router-outlet></router-outlet>
constructor(private route: ActivatedRoute) {}
get isHomepageModule() {
// This would be the ideal situation...
// Unfortunately, I cannot find any information about the module here
return this.route.snapshot.module instanceof HomepageModule;
}
是否可以访问模块信息?我更喜欢进行类型检查或模块名称比较,而不是仅仅对当前URL进行一些正则表达式匹配来“强行”检查。预先谢谢你。
我最终改变了最初的想法,并根据路线的data
属性比较了路线/模块。另外,我创建了AppService
来跟踪当前路线。这很有用,因为路径的树遍历可能是昂贵的逻辑,最好不要重复。