【发布时间】:2017-07-21 17:01:14
【问题描述】:
我正在使用一个面包屑组件来订阅 router.events。 问题是组件第一次加载时,它不会触发订阅。
ngOnInit(): void {
console.log("oninit beradcumbs");
this.router.events.filter(event => event instanceof NavigationEnd).subscribe(event => {
this.breadcrumbs = [];
let currentRoute = this.route.root,
url = '';
do {
const childrenRoutes = currentRoute.children;
currentRoute = null;
childrenRoutes.forEach(route => {
if (route.outlet === 'primary') {
const routeSnapshot = route.snapshot;
url += '/' + routeSnapshot.url.map(segment => segment.path).join('/');
this.breadcrumbs.push({
label: route.snapshot.data,
url: url
});
currentRoute = route;
}
});
} while (currentRoute);
console.log("Breadcumbs",this.breadcrumbs);
});
}
当单击具有 routerLink 属性的链接时,订阅会发出值并且它工作正常。 我将我的项目与使用 Augury 的项目进行了比较,在面包屑组件中,Router 的状态如下所示:Not working Router
还有工作的:Working router
如果您需要更多信息来帮助您,请立即联系我 :) 提前致谢!
【问题讨论】:
-
把这段代码放到constructor()中
-
@Vega 是的,它有效!但我不明白为什么。我正在使用与该组件的其他项目相同的代码