2017-01-04 5 views
3

敗走戦略決意でのparamsを取得する方法:角度2:

export const routes = [ 
{ 
    path  : 'rto-activation/:id', 
    component : RtoActivationComponent, 
    resolve : { 
     'singleRto': SingleRtoResolve 
    }, 
    children : [ 
     {path: 'start', component: ActivationStartComponent}, 
     {path: 'warning', component: WarningComponent}, 
     {path: 'confirm', component: ConfirmRtoDetailsComponent}, 
     {path: 'ldWaiver', component: LDWaiverComponent}, 
     {path: 'payment-schedule', component: PaymentScheduleComponent}, 
     {path: 'user-reference', component: ReferenceComponent} 

    ] 
} 

SingleRtoResolve:

constructor(private router: Router, 
      private route: ActivatedRoute) { 
} 

resolve() { 
    var self = this; 
    return new Promise((resolve, reject) => { 
     self.subscription = self.route.params.subscribe(
      (param: any) => { 
       let id = param[ 'id' ]; 
       self.rtoService.getRto(null, +id) 
       .then((res: any) => { 
        resolve(res) 
       }) 

      }); 
    }); 
    } 

私が知っている:我々は通常ActivatedRouteサービスからのparamsを取得します。

質問:ルータサービスからパラメータを取得できますか。

概要:その段階のルートがアクティブでなく、私はparamsを得ることができないため、Resolve注射液で経路パラメータを取得しようとしています。

ユースケース:ユーザーがいくつかの(:id)を持つ任意の子ルート(暗黙と明示的)を開くと、親ルートでデータを解決する必要があります。

ngOnInit() { 
let self   = this; 
this.subscription = this.route.params.subscribe(
    (param: any) => { 
     let id = param[ 'id' ]; 
     self.rtoService.getRto(null, +id) 
      .then((res: any) => { 

      }) 

    }); 
} 

答えて

4

あなたSingleRtoResolveべきimplements Resolve<T>:ルートはどの子コンポーネントにactivedされたときに

が正常にPARAMSを取得します。それでは、constructor() {}にデータサービス(RtoService)が必要です。 resolve()ActivatedRouteSnapshotとなり、RouterStateSnapshotになるので、RouterまたはActivatedRouteの必要はありません。 だから、resolve()はそのようななめらかになります。

resolve(
    route: ActivatedRouteSnapshot, state: RouterStateSnapshot 
): Promise<any> { 
    return ... 
    } 

を..andあなたは自分のIDを取得するためにroute.params['id']を使用することができます。


編集:あなたはまたにResolve

+0

使用route.params.idリード別のエラーのためにドキュメントをチェックすることができ 「プロパティ 『ID』タイプには存在しません「{[キー:文字列]:任意;} '。 角度付き..ts エクスポート宣言型Params = { [key:string]:any; }; – Faris

+0

'route.params ['id']'で試しましたか? –

+0

ですが、正常に動作します。 – Faris