Angular Redirection выполняет мой метод так же, как NgOnInit. Зачем?
Я новичок с угловой, так что терпите меня. У меня проблема с угловым перенаправлением. Когда я очищаю хранилище вручную, код выполняет ngOnInit, выдает ошибку, перенаправляет на страницу входа (как и ожидалось), но когда я пытаюсь сделать то же самое с помощью метода выхода из системы, мой код выполняет метод выхода из системы, ngOnInit и затем перенаправить на страницу входа. почему он выполняет ngOnInit той же страницы, когда я перенаправляю на другую страницу? Код ниже показывает метод выхода из системы.
Я попытался сделать это глобально, перенося код в конструктор
this.localStorage.clear().subscribe(() => {
console.log('Logout Method');
alertify.success("Logout Successfull !!");
this.router.navigate(['/login']);
}, () => {
alertify.error("Storage error");
});
Код должен просто выполнить метод выхода из системы вместо того, чтобы выполнять оба выхода и ngOnInit
2 ответа
Кажется, я сделал ошибку в своем коде
<a href="main_nav#" (click)="logout()" >Logout</a>
Я направлял свой URL в HREF на main_nav, а затем вызывал logout(). Так что после удаления содержимого HREF у меня это сработало.
<a href="" (click)="logout()" target="_self">Logout</a>
Это сработало для меня ☻
Вероятно, это потому, что вы подписываетесь на метод localstorage, который снова выполняет тот же код всякий раз, когда наблюдаемое генерирует событие. Так что попробуйте это;
_onDestroy$ = new Subject<void>();
this.localStorage.clear()
.pipe(
takeUntil(this._onDestroy$))
.subscribe(() => {
console.log('Logout Method');
alertify.success("Logout Successfull !!");
this.router.navigate(['/login']);
}, () => {
alertify.error("Storage error");
});
ngOnDestroy() {
this._onDestroy$.next();
}