Angular 重定向执行我的方法以及 NgOnInit。为什么?

Angular Redirection executes my method as well as NgOnInit. Why?

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

我试着在全球范围内制作它,将代码移至 Constructor

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

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

这可能是因为您订阅了 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();
}

看来我的代码有误

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

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

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

这对我有用☻