无法使用ngModel获取复选框的值

时间:2019-09-22 14:21:02

标签: angular ionic4

我尝试获取复选框的值,但是在控制台中未定义。 当我能够获得该值时,我会将数据保存到firebase中。

@RequiredArgsConstructor

和我的打字稿代码: 例如,我只是尝试在我的 <ion-item *ngFor='let rep of reponse;let i = index'> <ion-label>{{rep.name}}</ion-label> <ion-checkbox [(ngModel)]="rep.checked" color="primary" (ngModelChange)="updatedCheckList(i)" slot="start" > </ion-checkbox> </ion-item> <ion-button (click)="onClick()"></ion-button> 函数内部console.log这个值。

onClick()

不知道这是否正确,但是我找到了解决方案。在updateCheckList中,我有:private rep: any = {}; reponse = [ { name: 'test', checked: false }, { name: 'test2', checked: false }, { name: 'test3', checked: false }, ]; constructor() { } ngOnInit() { } updatedCheckList(itemIndex: number) { this.reponse.forEach((rep, index) => { if (itemIndex !== index) { rep.checked = false; } }); } onClick() { console.log(this.rep.name); } 这是我的.ts文件中的内容。

this.index = itemIndex;

1 个答案:

答案 0 :(得分:1)

您无需使用updatedCheckList自己管理它,只需将ngModel设置为reponse[i].checked即可在单击复选框时自动切换它:

            <ion-item *ngFor='let rep of reponse;let i = index'>
              <ion-label>{{rep.name}}</ion-label>
                <ion-checkbox 
                       [(ngModel)]="reponse[i].checked"
                       color="primary" 
                       slot="start"
                       >
                </ion-checkbox>
            </ion-item>
            <ion-button (click)="onClick()"></ion-button>  

更新-如何访问值

您的值始终存在,但是模板中的i仅在模板中。

在您选择的任何事件中,例如按钮的单击事件,您都可以访问reponse数组。

我现在看到了另一个问题,您是否仍想合并未选择的其他问题(因为这不是一个好主意,用户希望单选按钮可以互斥,并且复选框应尽可能多你喜欢”)

如果要获取一个特定的复选框值,则只需使用索引号:

let checked = this.reponse[1].checked;

如果要循环播放它们,可以放入自己的for循环并对其进行处理:

onClick() {
   for(let index = 0; index < reponse.length; index++) {
     console.log(`Index ${index) has a checked value of ${reponse[index].checked}`);
   }
}

这将为您显示所有值。

即时通讯使用template strings,这是在易于阅读的打字稿中进行字符串插值的好方法。

顺便说一句,这是学习基础知识的好方法,但与Firebase的实际工作相去甚远。您需要学习大量概念,才能了解Firebase如何保存它的数据,而您只是尝试自己亲自编写代码,这是绝对不会发现的。您需要为此找到合适的教程。它使用可观察到的流和实时更新,这与您可能使用mysql和php或类似方法完成的传统方式不同。