繁体   English   中英

Angular Redirection执行我的方法以及NgOnInit。 为什么?

[英]Angular Redirection executes my method as well as NgOnInit. Why?

我是新来的有角的,所以请忍受我。 我在使用Angular Redirection时遇到问题。当我手动清除存储时,代码执行ngOnInit,提示错误,重定向到Login页面(按预期方式),但是当我尝试使用注销方法执行相同的操作时,我的代码将执行Logout Method,ngOnInit,然后重定向到登录页面。 为什么在我重定向到另一个页面时执行同一页面的ngOnInit? 下面的代码显示注销方法。

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

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>

这对我有用worked

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM