Почему переменные в HTML-файле не обновляются после перехода внутри onAuthStateChanged?

#angular #typescript #firebase #ionic-framework #firebase-authentication

#angular #typescript #firebase #ionic-framework #firebase-аутентификация

Вопрос:

Я использую Ionic 5 с firebase, на самом деле все хорошо, пока не использую функцию onAuthStateChanged для сохранения входа в систему, если уже есть пользователь Auth. смотрите ниже

     this.ngFireAuth.onAuthStateChanged((user) => {
      if (user){
        //this.navCtrl.navigateRoot('/home');
        //this.router.navigate(["/home"]);
        this.navCtrl.navigateForward('/home');

      }
    })
  

У меня есть этот код, вставленный в мой конструктор, он действительно работает, однако после перехода на мою ДОМАШНЮЮ страницу переменные, используемые в HTML-файле, не обновляются, что вызывает визуальные ошибки, поскольку переменные не обновляются в * ngIf .

Примечание: эти переменные фактически работают с моим файлом TS, доказывая, что проблема связана только с файлом HTML.

У меня есть это, например:

     <ion-button fill="clear" [ngClass]="{'isActive': slide_index === 0}" (click)="goto_slide(0)">
      <ion-icon slot="icon-only" name="mail-outline"></ion-icon>
    </ion-button>
    <ion-button fill="clear" [ngClass]="{'isActive': slide_index === 1}" (click)="goto_slide(1)">
      <ion-icon  slot="icon-only" name="mail-open-outline"></ion-icon>
    </ion-button>

    <ion-button  fill="clear" [ngClass]="{'isActive': slide_index === 2}" (click)="goto_slide(2)">
    <ion-icon slot="icon-only" name="trash-outline"></ion-icon>
  </ion-button>
  

После перехода на мою домашнюю страницу приведенный выше код действительно хорошо работает в моем TS-файле, например, при смене слайдов, однако в моем html-файле slide_index остается 0, что вызывает визуальные ошибки. Кто-нибудь может посоветовать?

Примечание: Если ссылка на домашнюю страницу обновлена, домашняя страница работает нормально, также ПРИ вводе учетных данных для входа, после успешного входа в систему, при перенаправлении на домашнюю страницу, Html также работает нормально, проблема только в том, что доступ к маршруту осуществляется с помощью функции onAuthStateChanged

Ответ №1:

В любом случае, я до сих пор не знаю, почему это происходит, и кто может объяснить, спасибо, однако я смог найти способ включить / включить все переменные в HTML-файле для работы

 async ngOnInit() {

const isLogin = await new Promise<any>((resolve, reject) => {
this.ngFireAuth.onAuthStateChanged((user) => {
  if (user){
    resolve(true);
  }
})
})

if(await isLogin) {
  this.router.navigate(["/home"]);
}
}