从ngOnInit()重定向和后续挂钩导致重新加载当前组件

时间:2017-08-23 19:26:01

标签: angular angular2-routing angular2-router ngoninit routeparams

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

因为只有在实际发生重定向时才会发生这种情况,因此不确定在何处完全放置重新路由(生命周期)。

0 个答案:

没有答案