【发布时间】:2019-07-09 10:50:55
【问题描述】:
我有一个模型,它基本上是一个对象列表,每个对象都包含一个布尔值。这些布尔值必须由用户更新,所以我编写了一个组件,为每个对象创建一个复选框,然后我将这个复选框与它后面的模型绑定。
但是这不起作用!如果我选中一个复选框,它所绑定的模型似乎根本没有更新。
为了说明我的问题,我创建了一个最小的工作示例:
import {Component, Input, OnInit} from '@angular/core';
@Component({
selector: 'component-test',
template: `
<div *ngIf="!!data">
<div *ngFor="let item of data">
<ion-checkbox ([ngModel])="item.checked"></ion-checkbox>
</div>
</div>
<ion-button (click)="console_log()">print output</ion-button>
`
})
export class TestComponent {
@Input() data: any;
console_log() {
console.log(this.data);
}
}
@Component({
selector: 'page-test',
template: `
<ion-header>
<ion-toolbar color="primary">
<ion-title>
Test
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<component-test [data]="params.data | async"></component-test>
</ion-content>
`
})
export class TestPage implements OnInit {
params: any = {};
async get_data() {
return [{checked: false}, {checked: false}, {checked: false}];
}
ngOnInit() {
this.params['data'] = this.get_data();
}
}
如你所见:
- 数据在父组件中异步加载(页面测试)
- 数据被传递给一个测试组件(其中包含复选框)(组件测试)
- 我添加了一个按钮,用于在控制台中输出数据以验证模型的当前状态。
预期行为:
- 当我切换复选框时,模型中的布尔值应该反映复选框的状态,反之亦然
观察到的行为:
- 当我切换复选框并将模型输出到控制台时,我观察不到任何变化。
【问题讨论】:
标签: angular ionic-framework checkbox