0

提供されたパラメーターに基づいて、ngOnInit()、ngAfterViewInit() などのフックの 1 つから新しいコンポーネントにリダイレクトしようとしています。ルーターのナビゲート行がヒットすると、現在のコンポーネントが複数回実行されます。

働いた解決策:

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
               }
         });
    }

これは、リダイレクトが実際に発生した場合にのみ発生するため、re route (ライフサイクル) を正確にどこに配置すればよいかわかりません。

4

0 に答える 0