2016-07-25 73 views
0

我正在使用Angular 2并将HTTP请求中的错误传入logAndPassOn方法。我收到错误“属性'状态'不存在类型'错误'。”类型的错误是对象,但它看起来像一个类型的错误将被识别为类型的文件是。属性“状态”不存在类型'错误'

private logAndPassOn (error: Error) { 
    if (error.status == 403) { 
     Do things 
    } 
    return Observable.throw(error); 
    } 

我通过将错误的类型设置为'any'来解决这个问题,但似乎应该有更好的方法。有没有一个库来导入typeof错误?除了编写我自己的Error类并导入它之外,是否有办法处理这个问题?

+1

不知道在哪里使用这个方法,但如果你正在使用Http observable,这是你的错误回调,我认为传递给错误回调的实际类型是来自'@ angular/http'的'Response',在成功回调中得到的回应相同,而不是“错误”。 –

+0

我使用Http observable,这是我的错误回调,但如果我将错误更改为响应或响应,我会收到“无法找到名称”响应“。 –

+0

您需要从'@ angular/http'导入它 –

回答

2

传递给Http错误回调的对象实际上是@angular/http模块中的Response类型。这与您从初始Http调用中获得的Response是一样的。如果出现错误响应,则将Response作为错误发送给订户。

import { Response } from '@angular/json'; 

http.get(..) 
    .subscribe(
     (res: Response) => { doSomething(res.json()) } 
     (res: Response) => { ... }); 

所以基本上,你试图使用Error是不正确的。它在您使用any时起作用,因为在运行期间对象通过了实际的Response确实具有status属性。

相关问题