Angular >2 Subject 直接订阅还是使用方法?

标签 angular typescript rxjs

我有一个主题成员的服务。 Subject 提供类的实例:

public selectedProjectSubject: Subject<Project> = new Subject();

Subject 的值用一个方法更新:

public updateSelectedProject(project: Project) {
    this.selectedProjectSubject.next(project);
  }

在几个类(class)中我订阅了这个主题:

this.projectSubscription = this.projectService.selectedProjectSubject.subscribe((project: Project) => {
      this.projectSelected = project;
    });

直接订阅 Subject 或为 Subject (Observable) 提供其他方法是一种好的做法吗?

最佳答案

我在很多地方使用了 BehaviorSubject,我想阻止我的队友在包含主题的服务之外使用 .value,所以我通常会执行以下操作所有科目:

private _selectedProject = new Subject<Project>();
get selectedProject(): Observable<Project> {
  return this._selectedProject;
}

但是,以您所拥有的方式访问它并没有太大关系,如果您需要它,您以后可以随时更改我的方法,甚至无需仅使用 get 重构任何调用者 访问器。

关于Angular >2 Subject 直接订阅还是使用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45209322/

相关文章:

Angular2 可观察回调

design-patterns - Angular2 中的装饰/计算数组

javascript - 如何创建一个 RXJS 可暂停数据流,该数据流不会在每次恢复时重置?

typescript - 无法调用类型缺少调用签名的表达式,map

javascript - 如何从 lambda 函数返回字符串?

angular - 如何订阅响应式(Reactive) FormGroup 并映射值变化( Angular 6)

error-handling - RxJS "throw new Error"与 "Observable.throw"

angular - 如何有条件地添加 mat-raised-button?

javascript - 悬停时是否可以显示按钮的描述?

node.js - 如何将 jasmine 与服务器端 typescript 项目一起使用?