想了解最佳的角度实践。总的来说,一个人应该订阅一项服务中的可观察变量以存储值吗?还是只订阅相关的组件更好?如果由于这个原因可以订阅服务,那么订阅应该在服务的构造函数中完成,还是最好避免这种情况?
答案 0 :(得分:1)
我建议您不要在组件逻辑中同时订阅Observable
,除非您明确地unsubscribe()
订阅。
更好的方法是使用Angular提供的async
管道。
this.data$ = this.myDataService
.get()
.pipe(
map(res => res.data),
tap(x => console.log(x))
);
然后在模板中:
<div *ngFor="let data of (data$ | async)">
Hello {{data}}
</div>
这种方法具有许多优点,例如代码更简洁,避免内存泄漏,最佳性能,可维护性,易于迁移到OnPush
变更检测策略以及RxJS的强大用法。
我知道对于初学者来说可能很难理解,但是由于RxJS使用不当,我经常看到复杂的Angular应用程序。