Как установить условное значение по умолчанию в ионном выборе, используя данные из API - PullRequest
1 голос
/ 15 мая 2019

Я новичок с угловой 7 и ионной 4.

Я занимаюсь разработкой мобильного приложения, я работаю с API, у меня есть список задач, и когда я нажимаю на задачу, открывается модал с информацией о задаче, в этом модале есть некоторые поля, которые являются элементами Например, назначенному пользователю я хочу установить значение по умолчанию для ion-select в зависимости от того, какой назначенный пользователь был выбран при создании задачи.

Подводя итог, я хочу, чтобы, если пользователь был назначен, он будет установлен по умолчанию в ion-select, когда появится модальное значение.

HTML-файл:

<ion-row>
  <ion-col>
    <ion-label>Asigned User:</ion-label>
    <ion-select placeholder="Asigned User" formControlName="assignedUserId" > 
      <ion-select-option *ngFor="let user of simpleUsers|async;" [value]="user.id" (ionChange)="setUser(user.id)">
        {{user.lastName}} {{user.firstName}}
      </ion-select-option>
    </ion-select>
  </ion-col>
</ion-row>

Файл TS:

this.taskForm = this.formBuilder.group({
  'title':[null],
  'description' : [null],
  'descriptionHtml':[null],
  'assignedUserId': [null],
  'deadline':[null],
  'deadlineType':[null],
  'fromDate':[null],
  'clientId':[null]
});

// ...

async getTaskInfo() {
  this.taskId = this.navParams.get('taskId');

  await this.api.getTaskById(this.taskId).subscribe(result => {
    this.task = result;
  });
}

async getCompanies() {
  this.clients = this.api.getCompanies();
}

async getSimpleUsers() {
  this.simpleUsers = this.api.getSimpleUsers();
}

async setUser(userId) {
  this.assignedUserId = userId;
}

async setClient(clientId) {
  this.clientId = clientId;
}

1 Ответ

0 голосов
/ 15 мая 2019

Поскольку вы привязываете ion-select к элементу управления assignedUserId и свойству [value] из ion-select-option точек к user.Id, кажется, что единственное, что вам нужно сделать для инициализации ion-select - установить значение элемента управления assignedUserId, как только вы получите подробную информацию об этой задаче. Это было бы что-то вроде этого:

// ...

async getTaskInfo() {

  this.taskId = this.navParams.get('taskId');

  // If you want to use await, getTaskById() should return a promise
  this.task = await this.api.getTaskById(this.taskId).toPromise();

  // I'm assuming the task has an userId property
  if(this.task && this.task.userId) {

    // Update the value of the control
    this.taskForm.get('assignedUserId').setValue(this.task.userId);    

  }

}

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