【问题标题】:How manual run parent route resolver Angular 2?如何手动运行父路由解析器 Angular 2?
【发布时间】:2017-04-11 15:18:44
【问题描述】:

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

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

“ngOnInit”中的所有路由都从 Resolver 中获取解析器数据,为专利路由确定:

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

在第一个子路由中,我更新 ORDER 并导航到第二个子路由。但在第二个中,我从解析器非更新器数据 ['order'] 中获得。 如何在更新 ORDER 后从子路由运行父解析器并在所有兄弟路由中获取实际数据['order']?

【问题讨论】:

    标签: angular angular2-routing


    【解决方案1】:

    如果您只是从一个孩子导航到同一父母的另一个孩子,则不会再次解析数据。只有当您离开父 :orderId 路径时,它才会得到解决。

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

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

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-07
      • 2016-12-28
      • 1970-01-01
      • 2017-01-14
      • 1970-01-01
      • 2017-01-14
      • 1970-01-01
      • 2016-03-21
      相关资源
      最近更新 更多