Javascript将功能转换为箭头功能

时间:2018-07-20 08:59:08

标签: javascript angular typescript

我正在使用Angualr,并具有以下打字稿功能:

public watchLocationPath() {
    this.$scope.$watch(() =>
        this.$location.path(), function(value) {this.console.log(value);
    });
}

this对象是undefined,因为它不在范围内。要解决此问题,我可以将现有的function(value)更改为使用箭头符号(然后this对象将在范围内)。

但是,当我将其转换为以下内容时,

    this.$scope.$watch(() =>
        this.$location.path(), (value) => {this.console.log(value);
    });

我在编译时出错。

  • TSLint:在此单参数箭头功能(箭头括号)中,在参数周围禁止使用圆括号
  • 未解决的变量console

任何建议欢迎。

2 个答案:

答案 0 :(得分:3)

您不需要大括号,也不需要this

this.$scope.$watch(
    () => this.$location.path(),
    value => console.log(value)
);

答案 1 :(得分:0)

无需将location.path包装到另一个函数中。您也可以不使用console

访问this.
// no need to wrap single parameter like `(value)` for your tsLint config.
this.$scope.$watch(this.$location.path, value =>{
   //this from parent

})