我正在做一個使用 angular 12 和 NGRX 的專案。
我收到此錯誤:
Error: src/app/auth/state/principal.effects.ts:17:30 - error TS2345: Argument of type '() => Observable<unknown>' is not assignable to parameter of type '() => EffectResult<Action>'.
Type 'Observable<unknown>' is not assignable to type 'EffectResult<Action>'.
Type 'Observable<unknown>' is not assignable to type 'Observable<Action>'.
Type 'unknown' is not assignable to type 'Action'.
在這個代碼塊上:
getToken$ = createEffect(() => {
return this.actions$
.pipe(
ofType(PrincipalActions.login),
switchMap(action => this.loginService.getToken(action.credentials)
.pipe(
map(authentication => {alert("success from effects"); return EMPTY}),
catchError(error => {console.log(error); return error;})
)
));
});
這是登錄服務:
export class LoginService {
constructor(private http: HttpClient) { }
getToken(credentials: Credential): Observable<Principal> {
return this.http.post<Principal>(environment.baseUrl '/login', JSON.stringify(credentials) )
}
}
知道為什么我會收到上述錯誤以及如何解決它嗎?
uj5u.com熱心網友回復:
效果應該回傳一個新的動作,從我看到你的效果不會回傳它。如果你想在效果中做一些事情,而不調度一個新的動作,你可以將它指定為createEffect函式中的另一個引數。請參閱非調度效果
getToken$ = createEffect(() =>
this.actions$.pipe(
ofType(PrincipalActions.login),
switchMap(action => this.loginService.getToken(action.credentials)
.pipe(
tap(authentication => alert("success from effects")),
catchError(error => {console.log(error); return error;})
)
),
), { dispatch: false});
如果你想用 NgRx 以某種方式處理結果,或者用操作替換EMPTY和。errorgetToken
map(authentication => {
alert("success from effects");
return PrincipalActions.loginSuccess(...);
}),
catchError(error => {
console.log(error);
return PrincipalActions.loginError(...);
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/408386.html
標籤:
