0

尝试根据提供的参数从 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
               }
         });
    }

因为这种情况只有在实际发生重定向时才会发生,因此不确定将重新路由(生命周期)准确地放在哪里。

4

0 回答 0