订阅服务

时间:2019-08-02 20:54:12

标签: angular observable

想了解最佳的角度实践。总的来说,一个人应该订阅一项服务中的可观察变量以存储值吗?还是只订阅相关的组件更好?如果由于这个原因可以订阅服务,那么订阅应该在服务的构造函数中完成,还是最好避免这种情况?

1 个答案:

答案 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应用程序。