【发布时间】:2017-03-28 03:22:21
【问题描述】:
我正在尝试将 material2 中的零食栏设置为 angular2 服务的错误捕获器。在我看来,我所做的一切都是正确的,但仍然出现错误
异常:未捕获(承诺):TypeError:无法读取未定义的属性“通知” TypeError:无法读取未定义的属性“通知”
这是我的捕手服务:
import { Injectable } from '@angular/core';
import {Headers, Http, RequestOptions} from '@angular/http';
import 'rxjs/add/operator/toPromise';
import {Observable} from 'rxjs/Rx';
import {MdSnackBar, MdSnackBarConfig, MdSnackBarRef} from '@angular/material';
@Injectable()
export class AppServices {
private api = 'app/endpoint';
private headers = new Headers({ 'Content-Type': 'application/json' });
private options = new RequestOptions({ headers: this.headers });
constructor(
private http: Http,
private snackbar: MdSnackBar
) { }
getConfigs(): Promise<any> {
return this.http
.get(this.api + "/confs")
.toPromise()
.then(response => response.json() as Array<Object>)
.catch(this.handleError)
}
// ==============
// errors handler
// ==============
notify (status: any, text: any) {
this.snackbar.open(status, text, {
duration: 3000
});
}
public handleError(error: Response) {
this.notify(error.status, error.statusText);
return Observable.throw(error.json() || 'Server error');
}
}
因此,当捕手而不是蛇形条出现错误时,我会在控制台中收到错误,即我的函数未定义。
谁能解释我的错误在哪里?提前致谢
【问题讨论】:
-
你试过了吗:
.catch((err)=>{this.handleError(err);})? -
哇!有用!如果你能解释一下,我很感激