<mat-select> selectValue перезаписывается первым элементом в массиве, который заполняет раскрывающийся список - PullRequest
0 голосов
/ 14 мая 2019

Я изучал угловой в течение последних нескольких недель, и в настоящее время я застрял в проблеме, использующей реактивные формы углового материала.

Когда я запускаю приведенный ниже код, раскрывающийся списокиметь все значения из xS, но выбранное значение отображается как «а», а не «с»

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

html:

    <div fxLayout="row">
      <mat-form-field>
        <mat-label>Label</mat-label>
        <mat-select formControlName="temp" placeholder="Temp" [compareWith]="compareObjects" [(value)]="selectedValue">
          <mat-option *ngFor="let x of xS" [value]="x">
            {{x}}
          </mat-option>
        </mat-select>
      </mat-form-field>
    </div>
Selected: {{ selectedValue }} <!-- Returns 'c' -->

компонент:

...

export class editTempForm implements OnInit {

  // xS is: ['a', 'b', 'c', 'd', 'e']
  private xS = [];
  private selectedValue: string = '';

  constructor(private formBuilder: FormBuilder, private apiGet: ApiGet) { 
    this.populateForm();
    this.tempForm = this.createFormGroup();

  }

  createFormGroup() : FormGroup {
    return new FormGroup({
      temp: new FormControl(''),
    });
  }
  compareObjects(o1: any, o2: any): boolean {
    return o1.name === o2.name && o1._id === o2._id;
  }
  toArr(arr) {
    let rv = [];
    for (let i = 0; i < arr.length; i++)
      rv[i] = arr[i];
      return rv;
  }

 getDropDownData() {
    this.apiGet.getData().subscribe(
      (data) => {
        if (data) {
          this.xS= this.toArr(data);
        }
      });

populateForm() {
    this.getDropDownData();
    this.selectedValue = "c";

  }


  ngOnInit() {
  }

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