Javascript转换函数到箭头函数

Javascript转换函数到箭头函数,javascript,angular,typescript,Javascript,Angular,Typescript,我正在使用Angualr,并具有以下类型脚本功能: public watchLocationPath() { this.$scope.$watch(() => this.$location.path(), function(value) {this.console.log(value); }); } 此对象未定义,因为它超出范围。为了解决这个问题,我可以将现有的函数(值)改为使用箭头符号(这样这个对象就在范围内) 但是,当我将其转换为以下内容时 t

我正在使用Angualr,并具有以下类型脚本功能:

public watchLocationPath() {
    this.$scope.$watch(() =>
        this.$location.path(), function(value) {this.console.log(value);
    });
}
对象未定义,因为它超出范围。为了解决这个问题,我可以将现有的
函数(值)
改为使用箭头符号(这样
这个
对象就在范围内)

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

    this.$scope.$watch(() =>
        this.$location.path(), (value) => {this.console.log(value);
    });
我在编译时出错

  • TSLint:在此单参数arrow函数(arrow parens)中,禁止在参数周围使用括号
  • 未解析变量
    控制台

欢迎任何建议。

您不需要花括号,也不需要控制台使用此

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

无需将
location.path
包装到另一个函数中。您也可以访问
控制台
,而无需
此功能。

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

})

第一个错误:删除
周围的括号。第二个错误:您不需要
this.console
,只需要
console
。为什么要使用
this.console.log
而不是
console.log
?或者,如果您喜欢这种样式,可以适当地配置
arrow parens
规则。谢谢,这很有效。我需要等待10分钟才能将此标记为正确答案。