У меня вопрос о том, как вернуть Наблюдаемое внешнему обещанию. У меня в файле effect.ts следующее:
@Effect()
login$: Observable<Action> = this.actions$.pipe(
ofType(UserActions.LOGIN),
switchMap((action: UserActions.LoginAction) => {
this.db.auth.signInWithEmailAndPassword(action.payload.email, action.payload.password).then(data => {
this.db.auth.currentUser.getIdToken().then(reply => {
return this.http.post(environment.apiUrl+'/api/login', { token: reply }).subscribe(response => {
if (response['valid'] === 'true') {
localStorage.setItem('token', JSON.stringify(reply));
this.router.navigate(['dash']);
}
});
});
}).catch(err => {
console.log('signIn failed: ' + err.message);
});
})
);
Теперь моя цель - просто войти в FireBase, чтобы иметь возможность получить идентификационный токен и отправить запрос на отправку в серверную часть. Если ответ возвращается со свойством valid «true», перейдите к модулю «da sh».
Однако моя проблема:
Аргумент типа '(action: UserActions.LoginAction) => void' нельзя назначить параметру типа '(значение: LoginAction, index: number) => ObservableInput'. Тип 'void' нельзя назначить типу 'ObservableInput'.ts (2345)
Я полагаю, что это потому, что я поместил свой оператор return во внешнее обещание. Но я не знаю, как заставить его возвращаться правильно, потому что Firebase использует обещания, а NgRX использует Observables! Я пытаюсь вернуть Observable из обещания ... спасибо