首页 > 解决方案 > 用于状态管理的 Angular 和 rxjs subect

问题描述

我只是想知道在服务中使用 Subject 来通知组件状态已更改是否可以。让我举个例子。例如,我有一个组件 adresses-list.component.ts 它只是一个地址列表。单击确定的地址时,其完整信息将在列表右侧或模式中打开。它将被称为“edit-address.component.ts”,因此用户可以在此组件中编辑地址并保存更改。我当然明白,会有后端更新它的请求。然而,问题是我的 addresses-list.component.ts 不会知道这个变化,因为它订阅了可观察的地址而不是变化。所以我的问题是:在我的 service.ts 中执行以下操作是否正常:

addressesUpdated = new Subject();
editAddressById(id) {
// send info to DB
  return this.http.patch().map(_ => {this.addressesUpdated.next())
}

在我的地址列表.component.ts

service.addressesUpdated.switchMap( _ => service.getAddresses())
.subscribe(...save data here)

在我看来,有更好的解决方案和更优雅的解决方案,但我不知道如何做得更好)

标签: angularrxjs

解决方案


好吧,你当然可以做到。AngularEventEmitter也只是下面的一个主题(https://angular.io/api/core/EventEmitter)。但是,如果您觉得需要更频繁地执行此操作,我建议您查看像 ngrx 商店这样的状态管理解决方案:https ://github.com/ngrx/platform


推荐阅读