0

我是新来的,所以请耐心等待。我遇到了 Angular 重定向问题。当我手动清除存储时,代码执行 ngOnInit,提示错误,重定向到登录页面(如预期的那样),但是当我尝试使用注销方法做同样的事情时,我的代码执行注销方法,ngOnInit 然后重定向到登录页面。为什么当我重定向到另一个页面时它正在执行同一页面的 ngOnInit ?下面的代码显示了注销方法。

我尝试在全球范围内制作,将代码移动到构造函数

this.localStorage.clear().subscribe(() => {
    console.log('Logout Method'); 
    alertify.success("Logout Successfull !!");  
    this.router.navigate(['/login']);
    }, () => {
      alertify.error("Storage error"); 
});

代码应该只执行 logout 方法而不是同时执行 logout 和 ngOnInit

4

2 回答 2

0

看来我在代码中犯了一些错误

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

我将HREF中的 URL指向 main_nav,然后调用 logout()。因此,在删除HREF的内容后,它对我有用。

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

这对我有用☻</p>

于 2019-02-05T09:49:54.220 回答
0

这可能是因为您订阅了 localstorage 方法,该方法在 observable 发出事件时再次执行相同的代码。所以试试这个;

_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();
}
于 2019-02-04T16:32:26.070 回答