我有一個問題,當我試圖建立終極版在我Angular4項目中,我使用的代碼下面的管理登錄操作:RXJS抓住運營商沒有趕上錯誤
@Effect()
login$: Observable<Action> = this.act
.ofType(actions.LOGIN)
.map((action: actions.LoginAction) => action.payload)
.switchMap((val: { email: string, password: string }) => this.authService.login(val.email, val.password)
.map(auth => new actions.LoginSuccessAction(auth))
.catch(err => of(new actions.LoginFailAction(err))));
由於某種原因,Webstorm不承認rxjs「map」運算符,但在編譯時運行良好。
而且authService裏面我定義的模擬日誌中檢查:
login(email: string, password: string): Observable<any> {
if (email == '[email protected]') {
return Observable.of('Login Success');
}
throw(new Error('Username or password incorrect'));
}
如果電子郵件是[email protected]一切工作正常,Redux的狀態變化但是如果登錄失敗,我的「捕獲」操作出於某種原因不捕獲錯誤,而不是在控制檯中出現錯誤如下
在我的核心模塊的文件夾我導入模塊如下:
import 'rxjs/add/operator/catch';
任何人都知道這裏發生了什麼?
感謝
不要拋出'new Error'只嘗試'throw false'或任何適合的值。這應該被捕獲者捕獲。 – David
@David拋出'false'將沒有任何區別。下面的答案中描述了實際問題。 – cartant