Ionic 3 ion-option: выбранные элементы не отменяются после перезагрузки или повторной инициализации массива? - PullRequest
0 голосов
/ 01 октября 2019

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 при начальной загрузке страницы. и когда я выбираю какие-либо элементы (это может быть несколько элементов) опции отдела, а затем просто вызывал другой API для извлечения данных подотдела в соответствии с идентификаторами отделов и повторной инициализации данных массива this.subdeptAPIdata. Но проблема в том, что данные подотдела нельзя отменить, какой был выбран ранее. Я просто хочу обновить массив и перезагрузить данные снова для подотдела без проверки каких-либо элементов.

Пожалуйста, дайте мнезнаю, есть ли у вас, ребята, какие-нибудь надежные решения или я допустил какие-либо ошибки в коде ... Заранее спасибо !!!

1 Ответ

0 голосов
/ 01 октября 2019

subDepItems становится массивом для множественного выбора. установите это значение в пустой массив перед перезагрузкой данных для сброса поля выбора.

this.subDepItems = [];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...