Angular Redirection выполняет мой метод так же, как NgOnInit.Зачем? - PullRequest
0 голосов
/ 04 февраля 2019

Я новичок с угловой, так что терпите меня.У меня проблема с угловым перенаправлением. Когда я очищаю хранилище вручную, код выполняет 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 ]

0 голосов
/ 05 февраля 2019

Кажется, я допустил некоторую ошибку в своем коде

<a href="main_nav#" (click)="logout()" >Logout</a>

Я направлял свой URL в HREF на main_nav и затем вызывал logout ().Поэтому после удаления содержимого HREF это сработало для меня.

<a href="" (click)="logout()" target="_self">Logout</a>

Это сработало для меня ☻

0 голосов
/ 04 февраля 2019

Вероятно, это потому, что вы подписываетесь на метод 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();
}
...