Как выбрать значение в md-select с formcontrolname в угловых 4

Я использую реактивную форму и угловой материал md-select .

Это моя форма

<md-select placeholder="Parent Category" class="full-width" formControlName="parent_id">
  <md-option>None</md-option>
  <md-option *ngFor="let category of plainCategories" [value]="category.id">
    <span *ngIf="category.subcategory.length==0">&nbsp;</span>{{ category.name }}
  </md-option>
</md-select>

Я хочу установить md-select значение из кода, и это то, что я пытался

onClicked(e){
  if (e && e.action == 'edit') {

    let item = {
      id: e.item.id,
      name: e.item.name,
      slug: e.item.slug,
      parent_id: e.item.parent_id
    };

    this.categoryForm.setValue(item);
  }
} 

Это обновление значения формы ({{categoryForm.val | json}} показывает установленное значение), но опция выбора не отображает выбранную опцию. Как выбрать вариант md?

1 ответ

Решение

Если набор полей для обновления не является полным, как объявлено в форме (например, если есть также элемент с именем category, Кроме того id, name, slug а также parent_id), затем setValue() не будет работать, используйте patchValue() вместо:

this.categoryForm.patchValue(item);

Вы также можете установить значение для каждого поля:

this.categoryForm.get('parent_id').setValue(e.item.parent_id);

посмотрите мой пример плунжера: https://plnkr.co/edit/PftFkCQ5fvLICczt7gAO?p=preview

Другие вопросы по тегам