#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"]);
}
}