[英]Observable and dependency injection in angular2
我有这样的服务:
@Injectable()
export class AuthService {
private contentHeader: Headers = new Headers({"Content-Type": "application/json", "Accept": "application/json"});
constructor(public events: Events, private authHttp: AuthHttp){
}
public get(url): Observable<any> {
return this.authHttp.get(url, { headers: this.contentHeader })
.map(this.extractData)
.catch(this.handleError);
}
public extractData(res: Response) {
try {
let body = res.json();
return body || {};
}
catch (e) {
return {};
}
}
public handleError(error: any) {
if (error.status == 401 || error.status == 403)
{
// injected
this.events.publish('user:logout');
}
return Observable.throw(error);
}
}
this.events在handleError内部不起作用,并在控制台中触发此错误:EXCEPTION:TypeError:this.events未定义
如何在Observable的map和catch部分内部通过依赖项注入使用我的服务?
您需要使用箭头功能保留上下文
.catch((err) => this.handleError(err));
要么
public handleError = (error: any) => {
...
}
或使用bind
方法
.catch(this.handleError.bind(this));
在此处查看有关词法的更多详细信息:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.