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.
后调用
有关如何访问异步数据的更多详细信息,请参阅此处:
声明变量
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.
有关如何访问异步数据的更多详细信息,请参阅此处: