Select Angular 6 中的 RxJS 状态不起作用
Select a State with RxJS in Angular 6 doesn't work
在我使用 Angular 和 RxJS 6 的 Web 应用程序中。该应用程序有一个登录名,登录名的响应是一个令牌,所以在登录后,我将令牌保存在 sessionStorage 中,然后我解码令牌以保存当前登录的用户。这是登录后的状态:
我正在尝试开发这种行为:如果用户转到页面“..login”(所以在 login.components.ts 中)并且如果他已经登录,则应用程序将重定向到主页.
这是我在 login.component.ts:
中的 ngOnInit() 中的代码
ngOnInit() {
this.store.select('auth')
.pipe(take(1),
map((authState: fromAuth.State) => {
console.log('test');
if (authState.authenticated) {
this.router.navigate(['/home']);
}
}));
}
这是AppState的接口:
export interface AppState {
user: fromProfile.State,
auth: fromAuth.State,
core: fromCore.State
}
测试它,我登录,我回到家,然后我去登录页面,我在 console.log() 中放置了一个断点但是它没有到达断点,它甚至没有输入它,因此它不会重定向到主页。为什么?
* 已更新 *:这是调试屏幕
select()
函数 returns 和 Observable
所以你必须 .subscribe()
它才能调用 pipe
。
在我使用 Angular 和 RxJS 6 的 Web 应用程序中。该应用程序有一个登录名,登录名的响应是一个令牌,所以在登录后,我将令牌保存在 sessionStorage 中,然后我解码令牌以保存当前登录的用户。这是登录后的状态:
我正在尝试开发这种行为:如果用户转到页面“..login”(所以在 login.components.ts 中)并且如果他已经登录,则应用程序将重定向到主页. 这是我在 login.component.ts:
中的 ngOnInit() 中的代码 ngOnInit() {
this.store.select('auth')
.pipe(take(1),
map((authState: fromAuth.State) => {
console.log('test');
if (authState.authenticated) {
this.router.navigate(['/home']);
}
}));
}
这是AppState的接口:
export interface AppState {
user: fromProfile.State,
auth: fromAuth.State,
core: fromCore.State
}
测试它,我登录,我回到家,然后我去登录页面,我在 console.log() 中放置了一个断点但是它没有到达断点,它甚至没有输入它,因此它不会重定向到主页。为什么?
* 已更新 *:这是调试屏幕
select()
函数 returns 和 Observable
所以你必须 .subscribe()
它才能调用 pipe
。