这是我想要实现的功能的一个非常基本的例子。我的问题是,当调用'greet'时,appConfig将不会存在于'this'上,因为它在函数内部。
如何保持对外部'this'的访问并能够调用appConfig?我希望这样做而不将外部'this'分配给像self这样的变量。
class Greeter {
static $inject = ['appConfig'];
constructor(
private appConfig: any
) {
}
greet() {
return getMessage();
function getMessage() {
return this.appConfig.value;
}
}
}
答案 0 :(得分:5)
您可以改用箭头功能。它们继承了闭包的上下文。
class Greeter {
static $inject = ['appConfig'];
constructor(
private appConfig: any
) {}
greet() {
let getMessage = () => this.appConfig.value;
return getMessage();
}
}
您可以阅读有关箭头功能here的更多信息。
虽然在这种情况下,我建议你只在课堂上制作另一个私人方法并调用它。
class Greeter {
static $inject = ['appConfig'];
constructor(
private appConfig: any
) {}
greet() {
return this.getMessage();
}
private getMessage() {
return this.appConfig.value;
}
}