Угловой материал: Mat-select не получает значения выбранной формы, когда это значение является объектом

#angular #typescript #angular-material #angular-material2

#угловой #typescript #angular-material #angular-material2

Вопрос:

У меня есть следующий код:

 <mat-select formControlName="x" #xyz>
    <mat-option *ngFor="let x of xList" [value]="x">{{ x.name }}</mat-option>
</mat-select>
  

Объект x выглядит примерно так:

 x: {id: string, name: string}
  

Моя проблема в том, что я использую сервис для получения всех объектов ‘x’, а затем я получаю пользователя, которому принадлежит атрибут, равный объекту x для редактирования, но значение select не получает значение user.x как выбранное.

В моем файле .ts:

 formUser = this.formBuilder.group({
id: null,
x: {
  id: null,
  name: null
}});
  

И в конструкторе:

 if (this.router.getCurrentNavigation().extras.state){
  this.user = this.router.getCurrentNavigation().extras.state.user;
  this.formUser.patchValue(this.user);
}
  

Как это можно решить?

Комментарии:

1. Вы должны опубликовать демонстрационную версию Stackblitz с вашей проблемой, которая должна облегчить вам помощь. Для вас проблема, и думаю, вам нужно привязать свой mat-select к выбранному значению.

2. Да, я связал несколько входных данных и выбирал с помощью formControlName, но это единственное, что является объектом, вызывает у меня проблемы

3. Попробуйте [ngValue] вместо [значение]

4. Разве вам не нужен compareWith метод для <mat-select> тега? material.angular.io/components/select/api

5. @GreyBeardedDeek с ngValue то же самое