not*_*Dev 0 unsubscribe observable ngrx angular
我将模板中的异步管道用于所有存储选择值,因为它会自行进行所有清理(包括取消订阅)。
但是,当我在auth gaurd中手动订阅一个值时,我需要取消订阅吗?如果是,那么最好的方法是什么?
@Injectable()
export class AuthGaurd implements CanActivate{
constructor(
private store: Store<fromRoot.State>,
private router: Router
){}
canActivate(){
this.store.select(getLoggedInState).subscribe(res => {
if(res){
return true
}else {
this.router.navigate(['/login']);
}
});
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
您应该take用来获取第一个值:
canActivate(){
this.store.select(getLoggedInState).take(1).subscribe(res => {
if(res){
return true
}else {
c this.router.navigate(['/login']);
}
});
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
take(n)使可观察对象采用n接收到的第一个值,然后完成。在这种情况下,您无需退订。
| 归档时间: |
|
| 查看次数: |
643 次 |
| 最近记录: |