Angular 2从外部函数

时间:2017-09-21 16:57:36

标签: javascript angular typescript

我在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总是会向控制台写入相同的值,无论它从何处被调用。

0 个答案:

没有答案