我正在Ionic App中工作,并且显示了项目列表,其中有用于选择项目的复选框。用户只能选择一个项目,但问题是,在我的项目列表中,用户可以选择所有项目。
这是我的 shopping.html :
<ion-list *ngFor="let itm of shippingdetails">
<ion-item-divider>
<ion-checkbox slot="end" [disabled]="isCheckboxDisabled" (ionChange)="selectCP(itm)"></ion-checkbox>
<!-- <ion-radio slot="start"></ion-radio> -->
<!-- <ion-toggle slot="start"></ion-toggle> -->
<ion-label>
<h2>{{itm.name}}</h2>
<p>{{itm.mobile}}</p>
<p>{{itm.state}}, {{itm.city}}</p>
<p>{{itm.address}}</p>
<p>Pincode: {{itm.pincode}}</p>
</ion-label>
<button ion-button outline item-end>
<ion-icon name="create"></ion-icon>
</button>
<button ion-button outline item-end>
<ion-icon name="trash"></ion-icon>
</button>
</ion-item-divider>
</ion-list>
在此,我显示了带有项目的复选框,用户可以在其中选择项目。
这是我的 shopping.ts :
isCheckboxDisabled:boolean=false;
selectCP(itm){
}
我无法对此做出合理的解释。在我的HTML中,用户可以选择所有项目。非常感谢您的帮助。
答案 0 :(得分:1)
您可以改用ion-radio。
<ion-list>
<ion-radio-group>
<ion-item *ngFor="let itm of shippingdetails">
<ion-label>{{itm.name}}</ion-label>
<ion-radio value="{{itm.id}}"></ion-radio>
</ion-item>
</ion-radio-group>
</ion-list>
答案 1 :(得分:1)
您可以按照以下步骤进行操作。
HTML
<ion-content padding>
<ion-list *ngFor="let itm of shippingdetails">
<ion-item-divider>
<ion-checkbox slot="end" checked="{{itm.isChecked}}" (ionChange)="selectCP($event, itm)"></ion-checkbox>
<ion-label>
<h2>{{itm.name}}</h2>
<p>{{itm.mobile}}</p>
</ion-label>
<button ion-button outline item-end>
<ion-icon name="create"></ion-icon>
</button>
<button ion-button outline item-end>
<ion-icon name="trash"></ion-icon>
</button>
</ion-item-divider>
</ion-list>
</ion-content>
TS
import { Component } from '@angular/core';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
shippingdetails: any = [];
constructor() {
this.shippingdetails = [
{ name: 'Raghav', mobile: '0771111111', isChecked: false },
{ name: 'Rahul', mobile: '0772222222', isChecked: false },
{ name: 'Virat', mobile: '0773333333', isChecked: false },
{ name: 'Sanga', mobile: '0774444444', isChecked: false },
];
}
selectCP(event, item) {
if (event.checked) {
this.shippingdetails.forEach(shpItm => {
if (shpItm.name === item.name) {
shpItm.isChecked = true;
} else {
shpItm.isChecked = false;
}
});
}
if (!event.checked) {
this.shippingdetails.forEach(shpItm => {
if (shpItm.name === item.name) {
shpItm.isChecked = false;
}
});
}
}
}
我认为这会有所帮助。找到工作的demo here