Angular 将数据传递给变量以及该变量的用法

Angular passing data to variable and that variable usage

声明变量

export class TestComponent implements OnInit {
testVar:string;

然后初始化

ngOnInit() {

this.somefunction works.subscribe( 
this.testVar='testData';
console.log('log1 '+this.testVar);
);
console.log('log2 '+this.testVar);
}

现在触发 AfterViewInit:

ngAfterViewInit() {
console.log('log3 '+this.testVar);

结果是

log1 testData
log2 undefined
log3 undefined

问题是为什么 log2 和 log 3 给出未定义的 testVar,我该如何解决?

异步数据不是这样工作的。调用后不会立即为变量赋值。所有直接依赖于异步数据的语句(this.testVar 这里)应该在订阅中。

ngOnInit() {
  this.service.someFunction().subscribe(
    value => {
      this.testVar='testData';
      console.log('log1 '+this.testVar);
      console.log('log2 '+this.testVar);
      ...
    }
  );
}

AfterViewInit 生命周期挂钩与变量在控制器中的初始化方式无关。它将在 Angular 完全初始化组件的 view/template.

后调用

有关如何访问异步数据的更多详细信息,请参阅此处: