我无法弄清楚如何在handlerError函数中使用toastr。当我运行它时,我收到的错误是
'错误'未定义的
这是我的代码
private handlerError(error: any) {
var errorMessage = 'Server error';
this.toastrService.error(errorMessage); <-- This doesn't work
return Observable.throw(errorMessage);
}
它被称为
post(url, data): Observable<any> {
this.toastrService.error('hey'); // <-- This works
return this.http.post(CONSTANT.API_URL + url, data, {
headers: this.createAuthorizationHeader()
}).
map((res:Response) => { return this.toCamel(res.json()) }).
catch(this.handlerError);
}
正在注射Toastr
constructor(private http: Http, private toastrService: ToastrService) {}
答案 0 :(得分:1)
更改
catch(this.handlerError);
到
catch(error => this.handlerError(error))
当您调用this.handlerError时,您在handlerError方法中的此对象是Window
当你做错误=&gt; this.handlerError(错误) - 这个错误引用你的类实例。
这是一种标准的JavaScript行为。
class A {
classAContext() {
return ()=>this.fn();
}
windowContext() {
return this.fn;
}
fn() {
console.log(this);
}
}
让我们创建一个对象:
let a = new A();
此行将打印Window
a.windowContext()();
此行将打印A {}
a.classAContext()();