2017-04-11 74 views
1

我有路线,一条父母路线和一些孩子。父路由器有解决方案 。如何手动运行父路由解析器Angular 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和所有兄弟路径获取实际数据['order']后,从子路由运行父解析器?

回答

0

如果您只是从一个孩子导航到同一父母的其他孩子,则不会再次解析数据。只有当您远离父母:orderId路径时才会解决该问题。

您可能会尝试返回订单数据的可观察数据,您可以在同级路线中设置该数据。并订阅儿童路线以获取更新的细节。但是要知道,当你离开:orderId的路径并回来时,你会得到一个新的Observable,因为数据将被再次解析。

话虽如此,这不是一个好的模式,如果您知道您要在儿童中更新数据,我会建议在中心位置使用服务代替数据操作。

希望这有助于!