Вот один подход, который может работать для вас. В вашей службе аутентификации вы можете создать частное свойство BehaviorSubject для хранения последнего значения частного свойства входа в систему. Затем вы можете создать публикацию c, наблюдаемую с BehaviorSubject в качестве источника. Наконец, вы можете подписаться на публикацию службы c, наблюдаемую на вашей странице / компоненте, которая может получать и устанавливать все, что вам нужно, когда происходит изменение состояния свойства входа в систему. Вот простой пример того, как это может работать:
loginService.ts
export class LoginService {
private login: boolean = false;
private loginSubject$ = new BehaviorSubject<boolean>(this.login);
loginChanged$ = this.loginSubject$.asObservable();
constructor() { }
updateLogin(){
this.login = !this.login;
this.loginSubject$.next(this.login);
}
}
home.page.ts
export class HomePage implements OnInit, OnDestroy {
timesClicked:number=0;
loginButtonText:string;
loginChangedSubscription: Subscription
constructor(private loginService: LoginService) {}
ngOnInit() {
this.loginChangedSubscription = this.loginService.loginChanged$.subscribe((loginValue)=>{
this.timesClicked += 1;
this.loginButtonText = (loginValue ? "Log Me Out" : "Log Me In");
})
}
ngOnDestroy(): void {
if (this.loginChangedSubscription) {
this.loginChangedSubscription.unsubscribe();
}
}
updateLogin():void{
this.loginService.updateLogin();
}
}
Просто чтобы показать, как это работает .... home.page.html
<ion-content>
<ion-item>
<ion-label>
{{timesClicked}}
</ion-label>
</ion-item>
<ion-button color="primary" (click)="updateLogin()">{{loginButtonText}}</ion-button>
</ion-content>
Надеюсь, это поможет.