很抱歉,如果它与某人的问题重复。但是我找不到解决问题的方法。
我有一个Angular 6应用。然后我提供了服务(不可注射)。
我需要创建一个新的服务实例,然后在内部创建一些魔术,然后在外部调用函数。但是,当我向组件的函数返回值时,我看不到组件的变量。这是代码示例:
example.component.ts
import { Calculation } from './calculation.service';
export class ExampleComponent implements OnInit {
test: 1;
potatoes: 2
calculation: Calculation;
ngOnInit() {
this.calculation = new Calculation(this.doExternalMagic, this.potatoes)
}
doExternalMagic(potatoes: number) {
console.log(potatoes); // 3
console.log(this.test); // undefined
}
}
calculation.service.ts
export class Calculation {
// i'm not sure that doExternalMagic should have type of Function
constructor(private doExternalMagic: Function, private potatoes: number) { }
public init() {
this.potatoes = this.potatoes + 1;
this.doExternalMagic(this.potatoes);
}
}
我也曾尝试在doExternalMagic
构造函数中将Calculation
设为公开,但是结果是一样的。在服务中提供func时,似乎做错了。我该如何正确提供它以在组件外部制作魔术?
答案 0 :(得分:2)
将您的函数作为箭头函数传递:
ngOnInit() {
this.calculation = new Calculation((potatoes) => this.doExternalMagic(potatoes), this.potatoes)
}
或使用bind()
。问题是this
关键字上下文。