尝试根据提供的参数从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
ReferrerComponent:
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
}
});
}
因为只有在实际发生重定向时才会发生这种情况,因此不确定在何处完全放置重新路由(生命周期)。