【问题标题】:Ionic 3 ion-option selected items not deselect after reload or re-initialized array?Ionic 3 ion-option 选择的项目在重新加载或重新初始化数组后没有取消选择?
【发布时间】: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


【解决方案1】:

subDepItems 成为一个用于多选的数组。在重新加载数据以重置选择框之前将其设置为空数组。

this.subDepItems = [];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    • 2011-10-27
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多