如何手动运行父路由解析器Angular 2?

时间:2017-04-11 15:18:45

标签: angular angular2-routing

我有路线,一条父路线和一些孩子。 父路由器有Resolve。

{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并导航到第二个孩子路线。但在第二个我得到解析器not-updater数据['order']。 如何在更新ORDER后在子路由中运行父解析器并在所有兄弟路由中获取实际数据['order']?

1 个答案:

答案 0 :(得分:0)

如果您只是从一个孩子导航到同一父母的其他孩子,则

将无法再次解析数据。只有离开父42路径时才会解决此问题。

您可以尝试返回订单数据的Observable,您可以在兄弟路线中设置。并订阅子路线以获取更新的详细信息。但要知道,当你离开:orderId路径并返回时,你会得到一个新的Observable,因为数据会再次被解析。

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

希望这会有所帮助!!