【发布时间】:2017-05-08 22:38:36
【问题描述】:
ngfor 循环中使用的数组,当它更新时,如何让 Angular2 重新运行该表达式?目前它不会输出任何东西,因为它在开始时使用空数组运行 - 一旦更新(数组已更改),ngfor 表达式不会重新运行 - 这是所需的功能。这是怎么做到的?
例如在组件HTML中;
<option *ngFor="let user of users" [value]="user.id">{{user.name}}</option>
在组件 TS 中我们声明了一个属性;
users: IUser[] = [];
在 ngOnInit 中,我们调用了一个返回用户数据的 TS 服务;
this.userDataService.getUsers().subscribe(data => {
this.users = data;
});
更新的代码示例;
@Component({
selector: 'app-manage-user',
templateUrl: './user-form.component.html',
providers: [UsersDataService]
})
export class UserFormComponent implements OnInit {
constructor(private userDataService: UsersDataService) {
}
users: IUser[] = [];
ngOnInit() {
this.userDataService.getUsers().subscribe(user => {
this.users = user;
});
}
}
【问题讨论】:
-
“更新”是什么意思?当你“更新”你的数组时,为什么不调用
this.userDataService.getUsers....方法呢? -
我们不能调用 getUsers 函数并直接分配给 user 属性,因为 getUsers 返回一个 observable。
-
*ngFor每次运行更改检测时都会检查数组的更改并相应地更新 DOM。您是在使用上面的ngOnInit代码还是在您的实际代码中更复杂?
标签: angular typescript