繁体   English   中英

angular2中的可观察和依赖注入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM