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>
这对我有用☻
我是 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>
这对我有用☻