订阅服务

sup*_*guy 6 observable angular

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

Mar*_*ine 2

我建议您不要Observable在组件逻辑中订阅,也不要在服务中订阅,除非您明确unsubscribe()订阅。

更好的方法是使用asyncAngular 提供的管道。

 this.data$ = this.myDataService
      .get()
      .pipe(
        map(res => res.data),
        tap(x => console.log(x))
      );
Run Code Online (Sandbox Code Playgroud)

然后在模板中:

<div *ngFor="let data of (data$ | async)">
  Hello {{data}}
</div>
Run Code Online (Sandbox Code Playgroud)

这种方法有很多好处,比如更干净的代码、避免内存泄漏、最佳性能、可维护性、轻松迁移到OnPush更改检测策略以及 RxJS 的强大使用。

我知道这对于初学者来说很难理解,但由于 RxJS 的错误使用,我经常看到复杂的 Angular 应用程序。