如何使用Material在Angular 6中将Mat-chip绑定到ngmodel

三星

我在垫对话框中有一个显示多个字段的表单。它们中的大多数都是输入并且可以完美地工作,它们与[(ngModel)]绑定,如下所示,但是我想要一个带有mat-chips和autocomplete的字段(如此)。我的问题是我不知道如何用[(ngModel)]绑定选定的芯片来获取数据。

我的HTML

<form class="mat-dialog-content" (ngSubmit)="submit" #formControl="ngForm">
<div class="form">
  <mat-form-field color="accent">
    <input matInput #inputname class="form-control" placeholder="Nom du WOD" [(ngModel)]="data.name" name="name" maxlength="50" required >
    <mat-error *ngIf="formControl.invalid">{{getErrorMessage()}}</mat-error>
    <mat-hint align="end">{{inputname.value?.length || 0}}/50</mat-hint>
  </mat-form-field>
</div>

<div class="form">
  <mat-form-field color="accent">
    <input matInput placeholder="Notes du coach" [(ngModel)]="data.coachesNotes" name="coachesNotes">
  </mat-form-field>
</div>

<div class="form">
  <mat-form-field class="chip-list" aria-orientation="horizontal">
    <mat-chip-list #chipList [(ngModel)]="data.movementsIds" name="movementsIds">
      <mat-chip
        *ngFor="let mouv of mouvs"
        [selectable]="selectable"
        [removable]="removable"
        (removed)="remove(mouv)">
        {{mouv}}
        <mat-icon matChipRemove *ngIf="removable">cancel</mat-icon>
      </mat-chip>
      <input
        placeholder="Ajouter un mouvement..."
        #mouvInput
        [formControl]="mouvCtrl"
        [matAutocomplete]="auto"
        [matChipInputFor]="chipList"
        [matChipInputSeparatorKeyCodes]="separatorKeysCodes"
        [matChipInputAddOnBlur]="addOnBlur"
        (matChipInputTokenEnd)="add($event)"
      />
    </mat-chip-list>
    <mat-autocomplete #auto="matAutocomplete" (optionSelected)="selectedChip($event)">
      <mat-option *ngFor="let mouv of filteredMouvs | async" [value]="mouv">
        {{ mouv }}
      </mat-option>
    </mat-autocomplete>
  </mat-form-field>
</div>

<div mat-dialog-actions>
  <button mat-button [type]="submit" [disabled]="!formControl.valid" [mat-dialog-close]="1" (click)="confirmAdd()">Ajouter</button>
  <button mat-button (click)="onNoClick()" tabindex="-1">Annuler</button>
</div></form>

我的组件

public confirmAdd(): void {
  this.dataService.addWod(this.data);
}

我填写的表格的视图

当我单击“添加”按钮时,我的项目将与所有其他字段一起添加,但正如我们在控制台中看到的那样,“ movementsIds”字段为null

预先感谢您为我带来的任何帮助。

三星

对于那些可能遇到相同问题的人,我已经找到了解决方案。

而不是使用[[ngModel)]将芯片列表绑定到我的“ data.movementsIds”上,我只是将“ mouvs”数组传递给我的“ confirmAdd”函数,然后使用该数组设置data.movementsIds,如下所示:

HTML:

  <mat-form-field class="chip-list" aria-orientation="horizontal">
    <mat-chip-list #chipList>
      <mat-chip
        *ngFor="let mouv of mouvs"
        [removable]="removable"
        (removed)="remove(mouv)">
        {{mouv}}
        <mat-icon matChipRemove *ngIf="removable">cancel</mat-icon>
      </mat-chip>
      <input
        placeholder="Ajouter un mouvement..."
        #mouvInput
        [formControl]="movementsIds"
        [matAutocomplete]="auto"
        [matChipInputFor]="chipList"
        [matChipInputSeparatorKeyCodes]="separatorKeysCodes"
        [matChipInputAddOnBlur]="addOnBlur"
        (matChipInputTokenEnd)="add($event)"/>
    </mat-chip-list>
    <mat-autocomplete #auto="matAutocomplete" (optionSelected)="selectedChip($event)">
      <mat-option *ngFor="let mouv of filteredMouvs | async" [value]="mouv">
        {{ mouv }}
      </mat-option>
    </mat-autocomplete>
  </mat-form-field>

零件 :

public confirmAdd(mouvs: Array<any>): void {
   this.data.movementsIds = JSON.stringify(mouvs);
   this.dataService.addWod(this.data);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Angular Material <mat-button-toggle>绑定到模型?

如何使用反应形式将表格绑定到Angular 6中的模型?

如何在Sencha ExtJs v6中将公式与商店正确绑定?

如何在Angular 2中将布尔值绑定到属性的存在?

嵌套ngFor中的Angular 2 ngModel绑定

NgbDatePicker-如何将longDate字符串绑定到[ngModel]?

如何在Angular4中将数据绑定到html属性?

将ngModel绑定到动态复选框列表:Angular 2 / Typescript

如何在angular-material2中将路线绑定到步进器?

服务对象无法绑定到Angular 5中的ngModel

如何在Angular Material中不使用ngModel设置双向绑定

将ngModel绑定到复杂数据

如何在Angular 6中将maxdate和mindate添加到mat-calendar

如何在角度6中将插值数据绑定到ngModel

将ngModel绑定到相反的值

如何在ES6中将json对象数组绑定到javascript类数组

如何将Angular-Material Select字段的显示值绑定到ngModel

如何在Angular Material中向Mat-basic-chip添加关闭按钮

如何使用Angular将值绑定到Web组件的属性?

如何在Angular 6中将值从打字稿代码传递到CSS

将ngModel而不是值绑定到用于货币输入的自定义Angular指令

Angular2-将ngModel绑定到属性的引用

如何使用angular4将数据绑定到mat-table数据源?

在 Ionic 框架中绑定到 ngModel

ngModel 无法绑定到异步属性 Angular

xamarin 形式选择器将选定的值绑定到 NgModel,如 angular

无法在 p-autocomplete 中将值绑定到 ngModel

如何使用 Angular 8 将图像绑定到 src 属性

Angular 11 无法绑定到 ngModel