这个公共属性的上下文在Typescript中的Map运算符中是Undefined

时间:2016-07-17 04:57:49

标签: typescript angular this observable

我正在实施以下代码:

isValidLogin():Observable<boolean> {
    return this.http.get(this._checkLoginUrl)
       .map(res=>res.json())
        .map((res) => {
            if (res.success) {
                this.loggedIn = true;
            }
            return res;
        });

}

透明的Js:

  LoginService.prototype.isValidLogin = function () {
    var _this = this;
    return this.http.get(this._checkLoginUrl)
        .map(function (res) { return res.json(); })
        .map(function (res) {
        if (res.success) {
            _this.loggedIn = true;
        }
        return res;
    });
};

此处loggedIn是该类的公共属性,但它显示undefinedthis此处成为Map对象上下文,并且无法为{{{{}赋值1}}。

我认为lambda表达式应该能够访问类对象的这个上下文。 我在这里做错了吗?

1 个答案:

答案 0 :(得分:0)

  

我认为lambda表达式应该能够访问类对象的这个上下文。我在这里做错了什么

班级成员可能也需要箭头。而不是:

isValidLogin = ():Observable<boolean> => {

写:

  suites:
  - name: default
    data_bags_path: 'databags'
    run_list:
      - recipe[x::y]
    attributes: {'kitchen' : 'true' }

更多

https://basarat.gitbooks.io/typescript/content/docs/arrow-functions.html