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();
}
Другие вопросы по тегам