web-dev-qa-db-ja.com

Angularマテリアルマット選択動的データバインディングAngular

私はAngular 6およびAngular Materialを使用しています。編集ボタンをクリックすると、セカンダリ、SSC、および男性の値が選択時に初期化されます。しかし、できません。[編集]ボタンをクリックした後でドロップダウンに男性の値しか表示できないので、ドロップダウンにすべての値を表示し、動的選択にオブジェクトを渡します。ありがとうございます。

ここに私のコードリンク: stackblitz link

3
monir tuhin

このソリューションで試すことができます

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>
10
Krishna Rathore

コードでは、オブジェクトを[値]にバインドしているため、オブジェクトを正しくバインドできません。性別セクションで行ったように値を文字列に変更すると、次のようになります。

[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>
3
Fateme Fazli