声明变量
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完全初始化组件的视图/模板后,将调用它。
有关如何访问异步数据的更多详细信息,请参见此处:AfterViewInit