2017-04-11 7 views
1

私はルート、親ルートと子供を持っています。 親ルーターがResolveを持っています。リゾルバは、特許ルートの決定から親ルートのレゾルバを手動で実行する方法角度2?

{path: ':orderId', component: OrderComponent, 
    resolve: {order: OrderResolver}, 
    children: [...]} 

「ngOnInit」のすべてのルートは、レゾルバデータを取得:

let data = this.route.snapshot.pathFromRoot.reduce((pv, cv) => Object.assign(pv, cv.data), {}); 
this.order = data['order']; 

最初の子のルートでは、私はORDERを更新し、2番目の子のルートに移動します。しかし、二番目に私はリゾルバー非アップデータのデータ[順序]から得ます。 ORDERおよびすべての兄弟ルートの更新後に子ルートから親リゾルバを実行するにはどのようにして実際のデータ[注文]が得られますか?

答えて

0

同じ親の子から別の子にナビゲートするだけでは、データが再度解決されません。親の:orderIdのパスから離れている場合にのみ解決されます。

兄弟ルートで設定できるオーダーデータのObservableを返すことをお試しください。更新された詳細を取得するために子ルートで登録します。しかし、あなたが:orderIdパスから移動して戻ってくると、データが再び解決されるので、新しいObservableが得られます。

これはいいパターンではなく、子供の間でデータを更新することがわかっている場合は、代わりに中央の場所でデータ操作用のサービスを使用することをお勧めします。

これが役立ちますように!