首页 > 解决方案 > 在服务中可观察与仅使用 this.service Angular 7

问题描述

我已经看到 authServices 有一个布尔或用户对象和另一个带有 nav 的组件,它根据日志状态显示不同的按钮。

因此服务被注入到组件中,并在 authService 中创建了 observable,因此组件可以订阅布尔值。我的问题是为什么使用 observable 而不仅仅是使用已经注入的服务实例:

<nav>
    <ul *ngIf="!this.authService.isAuth">
        <li><a routerLink="/home">Home</a></li>
        <li><a routerLink="/login">Login</a></li>
    </ul>
</nav>

从已经注入的服务:

constructor(private authService: AuthService) {
}

我已经看到了组件订阅 auth 服务中的 observable 的示例,所以它就像:

isAuth: Observable<boolean> //in the authService
this.authService.isAuth.subscribe(x => this.isAuth= x)

当您可以使用第一种方式时,为什么要使用 observable 呢?

标签: javascriptangular

解决方案


在这里最好(最佳实践)使用 BehaviorSubject 而不在组件中订阅它

html

<ul *ngIf="!(isAuth | async)">

组件.ts

isAuth: Observable<boolean> = this.authService.isAuth;

推荐阅读