gpt4 book ai didi

Angular 2.0,如何检测子组件上的路由更改

转载 作者:太空狗 更新时间:2023-10-29 17:17:14 27 4
gpt4 key购买 nike

如何检测子组件上的路由更改?。这是我尝试过的方法,但我只看到应用程序组件跟踪路由更改。我希望能够检测到 url 何时从例如MetaDetailView 组件中的#/meta/a/b/c 到#/meta/a/b/c/d。

@RouteConfig([
{ path: '/', name: 'Home', redirectTo: ['Meta']},
{ path: '/meta/...', name: 'Meta', component: MetaMainComponent, useAsDefault: true},
...other routes...,
])
export class AppComponent {
constructor(private _router: Router) {
_router.subscribe( (url) => console.log("app.url = " + url));
}
}

@RouteConfig([
{ path: '/*other', name: 'Detail', component: MetaDetailViewComponent, useAsDefault: true},
])
export class MetaMainComponent {
constructor(private _router: Router) {
_router.subscribe( (url) => console.log("metamain.url = " + url));
console.log("MetaMainComponent")
}
}

export class MetaDetailViewComponent {
constructor(private _router: Router) {
_router.subscribe( (url) => console.log("metadetail.url = " + url));
console.log("MetaDetailViewComponent")
}
}

谢谢杰斯珀

最佳答案

RC3+解决方案:

constructor(private router: Router) {
router.events.subscribe(event => {
if (event.constructor.name === 'NavigationStart') {
console.log(event.url);
}
});
}

或者,您可以使用 filter 筛选 NavigationStart 事件管道(RxJS 6+):

constructor(private router: Router) {
router.events.pipe(
filter(event => event instanceof NavigationStart),
).subscribe((event: NavigationStart) => {
console.log(event.url);
});
}

关于Angular 2.0,如何检测子组件上的路由更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36157326/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com