В веб-приложении я использую Angular и RxJS 6. Приложение имеет логин, ответ логина - это токен, поэтому после входа я сохраняю токен в sessionStorage, а затем декодирую токен, чтобы сохранить текущий. авторизованный пользователь. Это состояние после входа в систему:
Я пытаюсь разработать такое поведение: если пользователь перейдет на страницу «..login» (например, в login.components.ts) и если он уже вошел в систему, приложение перенаправит на домашнюю страницу. Это мой код внутри ngOnInit () в login.component.ts:
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 (), но она не достигает точки останова, даже не входит в нее, и поэтому не не перенаправлять на домашнюю страницу. Почему?
ngOnInit() { .pipe(take(1),
не совсем правильный код ... Это ваш настоящий код? - person   schedule 04.07.2018take(1)
? - person   schedule 04.07.2018ngOnInit
? Вы пробовали войти в систему перед вызовом store.select? - person   schedule 04.07.2018store.select
? - person   schedule 04.07.2018store.select
является Observable, но я хочу посмотреть, как вы его написали. Разве что из библиотеки? - person   schedule 04.07.2018