将数据按角度传递给变量以及该变量的用法

问题描述 投票:-1回答:1

声明变量

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,我该如何解决?

angular variables initialization ngoninit
1个回答
0
投票

这不是异步数据的工作方式。调用后不会立即为变量分配值。直接依赖于异步数据的所有语句(此处为this.testVar)都应位于订阅中。

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

AfterViewInit生命周期挂钩与控制器中变量的初始化方式无关。在Angular完全初始化组件的视图/模板后,将调用它。

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

© www.soinside.com 2019 - 2024. All rights reserved.