【问题标题】:Angular, accessing router params in a serviceAngular,访问服务中的路由器参数
【发布时间】:2018-04-12 08:00:55
【问题描述】:

我们有一个菜单对象(菜单存储),几个组件将使用它来填充数据。

在加载页面时,我希望从服务器加载菜单并将其公开为商店

private subject = new BehaviorSubject<Menu>(state);
private menuStore = this.subject.asObservable().filter((m) => m != undefined).distinctUntilChanged();

然后每个组件得到结果

    menu$ = this.menuStore.select<MenuItem>('menu');

所以我的问题是......目前我们在“menuService”的构造函数中执行操作。据我了解,这并不是真正的最佳实践,因为它不受 Angulars 控制(?)。

那么我们应该怎么做呢?我们应该在 menu.store.ts 中使用“implements OnInit”吗?或者在构造函数中这样做是否有效并且可以,这可能会给我们带来问题吗?

【问题讨论】:

  • 生命周期挂钩仅适用于组件
  • 啊..太好了!我有点怀疑.. 但是如果不订阅所有组件,我们怎么能做到这一点呢?
  • 服务确实有 ngOnDestroy 钩子

标签: angular observable store ngrx behaviorsubject


【解决方案1】:

我最终创建了“PageComponents”并在这些组件中订阅

this.route.params.subscribe((params: Params) => {
  this.menuService.setActiveItem(params.id)
})

【讨论】:

    猜你喜欢
    • 2022-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多