尝试根据提供的参数从 ngOnInit()、ngAfterViewInit() 等钩子之一重定向到新组件。如果击中路由器导航线,则当前组件将执行多次。
工作解决方案:
setTimeout(() -> { this.router.navigate(link)); //recently upgraded angular 3 to 4.0.0 router
主模块:
RouterModule.forChild([
{ path: 'referrer/:vehicle/:referrer', component: ReferrerComponent },
{ path: 'referrer/:referrer', component: ReferrerComponent },
{ path: 'vehicle', component: vehicleComponent},
])
路线:http://localhost:4200/#/referrer/vehicle1/referrer1
推荐人组件:
ngOnInit() {
this.routeObservable = this.route.params.subscribe((params) => {
if(params["referrer"]) { // do referrer stuff;}
if(params["vehicle"] == "vehicle1") {
this.router.navigate('/vehicle'); //redirect to vehicle component
}
});
}
因为这种情况只有在实际发生重定向时才会发生,因此不确定将重新路由(生命周期)准确地放在哪里。