【发布时间】:2020-01-30 17:02:01
【问题描述】:
HTML 文件:
<ion-item class="inputpsection" *ngIf="showDeptsec">
<ion-label floating class="fontsize12">Department</ion-label>
<ion-select (ionChange)="showDepartmentChosen($event)" multiple="true" formControlName="depId"
[(ngModel)]="depItems">
<ion-option value="{{dept.id}}" *ngFor="let dept of deptAPIdata" [selected]="dept.selected">{{dept.name}}
</ion-option>
</ion-select>
</ion-item>
<!-- SUB-DEPARTMENT -->
<ion-item class="inputpsection" *ngIf="showSubDeptsec">
<ion-label floating class="fontsize12">Sub-Department</ion-label>
<ion-select (ionChange)="showSubDeptChosen($event)" multiple="true" formControlName="subdepId"
[(ngModel)]="subDepItems">
<ion-option value="{{subDept.id}}" *ngFor="let subDept of subdeptAPIdata" [selected]="subDept.selected">
{{subDept.name}}</ion-option>
</ion-select>
</ion-item>
ts 文件:
export class DashboardPage {
public deptAPIdata: any = [];
public subdeptAPIdata: any = [];
constructor(public navCtrl: NavController, public navParams: NavParams,public remoteData: RemoteDataProvider){
}
showDepartmentChosen(itemVal: any): void {
this.getDepartment_dropdownItems()
}
getDepartment_unit_dropdownItems() {
this.remoteData.callAPIforDepUnit()
.then(data => {
this.apiData = JSON.stringify(data);
let obj: dep_unit = JSON.parse(this.apiData);
if (obj.status === 1) {
this.subdeptAPIdata = obj.subdeptData;
//for deselecting items
if (this.subDepItems.length > 0) {
for (var i = 0; i < this.subdeptAPIdata.length; i++) {
this.subDepItems.forEach((element: string) => {
if (element == this.subdeptAPIdata[i]['id']) {
this.subdeptAPIdata[i]['selected'] = false;
}
});
}
}
}
});
}
}
页面初始加载时,部门和子部门的所有选项值都从 API 动态显示。当我选择部门选项的任何项目(可以是多个项目)然后根据部门ID调用另一个api来获取子部门数据并重新初始化this.subdeptAPIdata数组数据。
但问题是子部门数据不能取消选择之前选择的那个。我只想刷新数组并再次为子部门重新加载数据而不检查任何项目。
如果你们有任何强有力的解决方案或者我在代码上犯了任何错误,请告诉我...提前谢谢!!!
【问题讨论】:
-
如果您可以使用示例数据创建相同的 StackBlitz 示例,这将更容易提供帮助。
标签: html angular typescript ionic3