【问题标题】:Handling Observable errors in angular 2 servcie处理 Angular 2 服务中的 Observable 错误
【发布时间】:2016-07-22 13:37:13
【问题描述】:

我有一个调用授权服务的登录服务,我需要捕获从 api 服务器返回的任何错误。

我目前在我的 login.component 中有这个:

   loginUser() {
    console.log(this.localUser.email);
    console.log(this.localUser.password);

    this.loginService.loginUser(this.localUser)
        .subscribe(
        token => {
            console.log('token = ' + token)
            this.token = token},
        error => {
            this.errorMessage = <any>error
            console.log("err msg = " + this.errorMessage);
        },
        () => this.completeLogin());
}

这是我的登录服务:

loginUser(localUser: LocalUser) {
    return this.authorizationService.loginUser(localUser);
}

这是我的身份验证服务:

loginUser(localUser: LocalUser): Observable<Token> {
    var grantString: string = "grant_type=password&username=";
    var passwordString : string = "&password="
    var email = localUser.email;
    var password = localUser.password;

    var headers = new Headers();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');

    var creds:string = grantString + email + passwordString + password;

    return this.http.post(this.url, creds, { headers: headers })
        .retry(2)
        .timeout(20000, new Error('Timeout expired.'))
        .delay(1000)
        .map((response: Response) => <Token>response.json())
        .catch(this.handleError);
}

handleError(error: any) {
    let errorMsg = error.message || 'Server error';
    console.error(errorMsg);
    return Observable.throw(errorMsg);
}

问题是返回的错误消息不是服务器错误,而是: "err msg = TypeError: 对象不支持属性或方法'throw'"

关于如何获取真实信息的任何想法?

【问题讨论】:

    标签: angular rxjs angular2-services


    【解决方案1】:

    您很可能缺少 rxjs 'throw' static 的导入。
    如果您自己一个一个地导入 rxjs 运算符和静态变量,就会发生这种情况。

    // 静态
    导入'rxjs/add/observable/throw';

    查看完整列表:
    https://github.com/ReactiveX/rxjs/blob/master/src/Rx.ts

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-10
      • 2016-10-25
      • 1970-01-01
      • 1970-01-01
      • 2017-11-25
      • 2019-01-09
      • 2016-08-20
      • 2018-04-23
      相关资源
      最近更新 更多