我有一个主题成员的服务。 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/