我尝试获取复选框的值,但是在控制台中未定义。 当我能够获得该值时,我会将数据保存到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;
答案 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或类似方法完成的传统方式不同。