我在Angular 2中有一个场景,我在“ComponentOne”类中有一个被“ComponentTwo”调用的暴露方法。
当在内部调用“ComponentOne”的方法时,类中的任何变量(OnInit,AfterInit)都会显示当前值。
但是当从外部类(ComponentTwo)调用“ComponentOne”的方法时,“this”不会引用正确的值。
以下是一个例子
ComponentOne的
@Component({
selector: 'testa',
template:`<button (click)="test_method()">CALL DIRECT</button>`
})
export class OneComponent implements OnInit {
myTest = 5;
constructor(
private testService: testService
) { }
public test_method = () => {
console.log(this.myTest); // when called direct, this value shows "8", but when called from external Component this value shows "5" ???????
}
ngOnInit() {
this.myTest = 7;
}
ngAfterViewInit() {
this.myTest = 8;
}
}
ComponentTwo
@Component({
selector: 'testb',
template:`<button (click)="b_method()">CALL</button>`
})
export class TwoComponent implements OnInit {
constructor(
private testService: testService
) { }
b_method = () => {
let x = this.OneComponent.test_method();
}
}
我认为这个问题与Scoped“this”有关,并确保该方法使用本地范围。
总结一下,我想确保test_method总是会向控制台写入相同的值,无论它从何处被调用。