Как связывать данные между сервисами и компонентами в режиме реального времени.
Давайте предположим, isAuthenticated
открытая переменная для службы аутентификации, которая влияет на некоторое представление в компоненте.У меня вопрос, как подписаться на переменную isAuthenticated
?
Служба:
import { Injectable } from '@angular/core';
@Injectable()
export class Authentication {
isAuthenticated:boolean = false;
login() {
localStorage.setItem('access_token', 'true');
this.isAuthenticated = true;
}
}
Компонент:
...
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
private isAuthenticated:boolean = false;
constructor(public authService: Authentication) {
this.isAuthenticated = this.authService.isAuthenticated'
}
}
home.html
...
<div *ngIf="isAuthenticated">Authentication view</div>
<div *ngIf="!isAuthenticated">Unauthentication view</div>
...
При указанном выше потоке привязка работаетхорошо, но не в режиме реального времени.
Итак, что является лучшим подходом:
1- Создайте наблюдаемое внутри службы аутентификации, чтобы подписаться на нее внутри компонента.
2 - Связывание с использованием следующего способа:
...
<div *ngIf="authService.isAuthenticated">Authentication view</div>
<div *ngIf="!authService.isAuthenticated">Unauthentication view</div>
...
Второй подход работает хорошо, но я не знаю, является ли это наилучшей практикой.
Спасибо.