Моя среда разработки не указывает на проблему (полностью зеленый), но при ее запуске возникает ошибка. (Я получу http404, и cacheError запустится. Теперь все в порядке, как «тест на ошибку».)
Сообщение об ошибке: ERROR TypeError: "You provided '() => ({ type })' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
Я вижу, но хочу отправить loginFailed
действие без подпорок.
HttpIntercept существует! Так что URL будет http://localhost:PORT/user/login
. Просто он недоступен.
actions.ts
// imports
export const types = {
loginStart: '[User] Login start',
loginSuccess: '[User] Login success',
loginFailed: '[User] Login fail',
};
export const loginStart = createAction(types.loginStart, props<ILogin>());
export const loginSuccess = createAction(types.loginSuccess, props<IUser>());
export const loginFailed = createAction(types.loginFailed);
effect.ts
import { types } from './actions';
import * as fromActions from './actions';
// and more imports
@Injectable()
export class UserEffects {
constructor(
private actions$: Actions,
private http: HttpClient,
private router: Router,
) {
}
loginProcess = createEffect(() => this.actions$.pipe(
ofType(types.loginStart),
exhaustMap((action) => {
return this.http.post<IUser>('/user/login', {
username: action.username,
password: action.password,
}).pipe(
map(data => {
console.log(data);
return fromActions.loginSuccess(data);
}),
catchError((err) => { // this will run
console.log(err);
return fromActions.loginFailed;
}),
);
})
));
}