Angular Material mat-select динамическая привязка данных в Angular

Я использую Angular 6 и Angular Material. Когда я нажимаю кнопку «Изменить», при выборе будут инициализированы значения Secondary, SSC и Male. Но я не могу этого сделать. Я могу показать значение Male в раскрывающемся списке только после нажатия кнопки Edit. Итак, я хочу показать все значения в раскрывающемся списке и передать объект для динамического выбора. Спасибо.

Ссылка на мой код здесь: stackblitz link < / а>


person monir tuhin    schedule 02.07.2018    source источник


Ответы (2)


Вы можете попробовать это решение

Я создал демонстрацию на Stackblitz

Component.ts

  editInfo(educationInfo) {
    this.education_level = educationInfo.aa;
    this.exam_title = educationInfo.bb;
    this.gender = educationInfo.cc;
    this.educationLevelChangeAction(this.education_level);
  }

  educationLevelChangeAction(education) {
    this.exam_title = "";
    let dropDownData = this.educationList.find((data: any) => data.educationLevelName === education);
    if (dropDownData) {
      this.degreeTitleList = dropDownData.degreeTitleList;
    } else {
      this.degreeTitleList = [];
    }

  }

Component.html

<mat-form-field>
  <mat-select placeholder="Select Level of Education" name="education_level" (selectionChange)="educationLevelChangeAction(education_level)" [(ngModel)]="education_level" >
    <mat-option *ngFor="let education of educationList" [value]="education.educationLevelName" >{{ education.educationLevelName }}</mat-option>
  </mat-select>
</mat-form-field>

<mat-form-field>
  <mat-select placeholder="Select Exam/Degree Title" name="exam_title" [(ngModel)]="exam_title">
    <mat-option *ngFor="let degreeTitle of degreeTitleList" [value]="degreeTitle">{{ degreeTitle }}</mat-option>
  </mat-select>
</mat-form-field>

<mat-form-field>
  <mat-select [(ngModel)]="gender">
    <mat-option *ngFor="let gender of genderList" [value]="gender">{{ gender }}</mat-option>
  </mat-select>
</mat-form-field>



<p>You selected: {{education_level}}  {{exam_title}} {{gender}}</p>
person Krishna Rathore    schedule 02.07.2018
comment
Спасибо. Вы проделали большую работу. Но нет инициализации значения SSC в раскрывающемся списке названия экзамена / степени после нажатия кнопки «Изменить». В остальном все сделано отлично - person monir tuhin; 02.07.2018
comment
Можете ли вы отобразить значение ssc в раскрывающемся списке Название экзамена / степени. Благодарность - person monir tuhin; 02.07.2018
comment
Если я поставлю O Level / Other в раскрывающемся списке Exam / Degree Title, а не SSC, тогда он не работает. Он дал только первый индекс, но я хочу только поместить любое значение из любого индекса после нажатия кнопки Edit. Спасибо - person monir tuhin; 02.07.2018
comment
Давайте продолжим это обсуждение в чате. - person monir tuhin; 02.07.2018
comment
большое спасибо. я кое-что изменил. Работает отлично. Вы сэкономили мне много времени. еще раз спасибо - person monir tuhin; 02.07.2018
comment
Я благодарна тебе. Вы решили две мои проблемы. Вы можете это решить? stackoverflow.com/questions/51233913/ - person monir tuhin; 09.07.2018
comment
Хорошо я проверю - person Krishna Rathore; 09.07.2018

в вашем коде вы привязываете объект к [value], поэтому он не может связать его правильно, если вы измените свое значение на строку, как в разделе гендера, все будет в порядке, например:

изменение [value] с education, который является объектом, на education.educationLevelName, который является строкой, и теперь он работает правильно.

<mat-form-field>
  <mat-select placeholder="Select Level of Education" name="education_level" (selectionChange)="educationLevelChangeAction(education_level)" [(ngModel)]="education_level" >
    <mat-option *ngFor="let education of educationList" [value]="education.educationLevelName" >{{ education.educationLevelName }}</mat-option>
  </mat-select>
</mat-form-field>
person Fateme Fazli    schedule 02.07.2018
comment
@monirtuhin ты проверил мой ответ? это проще, чем вы думаете, и нет необходимости дополнять его, как другой ответ. - person Fateme Fazli; 02.07.2018
comment
спасибо @fateme fazli. Я проверил ваш ответ. Я пробовал это раньше, но у меня это не работает. - person monir tuhin; 02.07.2018