Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在服务中可观察到与仅使用此服务相比。7_Javascript_Angular - Fatal编程技术网

Javascript 在服务中可观察到与仅使用此服务相比。7

Javascript 在服务中可观察到与仅使用此服务相比。7,javascript,angular,Javascript,Angular,我见过authServices,其中有一个布尔或用户对象,另一个组件有一个nav,根据日志状态显示不同的按钮 因此,服务被注入到组件中,并在authService中创建observable,以便组件可以订阅布尔值。我的问题是为什么使用observable而不仅仅是使用已经注入的服务实例: <nav> <ul *ngIf="!this.authService.isAuth"> <li><a routerLink="/home">

我见过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>
我看到过一些示例,其中组件订阅了auth服务中的一个可观察对象,因此它会是这样的:

isAuth: Observable<boolean> //in the authService
this.authService.isAuth.subscribe(x => this.isAuth= x)
isAuth:Observable//在authService中
this.authService.isAuth.subscribe(x=>this.isAuth=x)
既然第一种方法可以使用observable,为什么还要使用它呢?

在这里,最好使用BehaviorSubject,而不在组件中订阅它

html


组件技术

isAuth: Observable<boolean> = this.authService.isAuth;
isAuth:Observable=this.authService.isAuth;
在这里,最好(最佳实践)使用BehaviorSubject,而不在组件中订阅它

html


组件技术

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

在代码中,您将authService作为private注入,因此无法在tempalte(html)中使用它file@flowest我的整个应用程序正在以这种方式使用它,而且它正在工作。auth服务有@Injectable({providedIn:'root'}),我将它作为私有注入到我的组件中,并在模板中使用它。这是一个有趣的问题。例如,如果重构服务代码,则很难在html中找到对象引用。就我个人而言,我希望我的html只依赖于组件代码。在代码中,您将authService作为私有注入,因此您将无法在tempalte(html)中使用它file@flowest我的整个应用程序正在以这种方式使用它,而且它正在工作。auth服务有@Injectable({providedIn:'root'}),我将它作为私有注入到我的组件中,并在模板中使用它。这是一个有趣的问题。例如,如果重构服务代码,则很难在html中找到对象引用。就个人而言,我更喜欢我的html只依赖于组件代码。
isAuth: Observable<boolean> = this.authService.isAuth;