【问题标题】:Enabling multiple selections in a nb-select, when Angular's ngModel is set设置 Angular 的 ngModel 时,在 nb-select 中启用多项选择
【发布时间】:2021-09-17 20:50:13
【问题描述】:
<form #form="ngForm" (ngSubmit)="formSubmit(form.value)">
    <nb-select name="select" ngModel multiple>
        <nb-option value="1">Item 1</nb-option>
        <nb-option value="2">Item 2</nb-option>
        <nb-option value="3">Item 3</nb-option>
        <nb-option value="4">Item 4</nb-option>
    </nb-select>
</form>

当我将“多个”添加到 nb-select 时,出现以下错误:

ERROR Error: Uncaught (in promise): Error: Can't assign single value if select is marked as multiple

我不是 Angular 专家,所以我不确定,但我认为问题在于 Angular 试图将一组值分配给字符串类型的变量。

如果我删除“多个”,它工作正常。此外,如果我删除“ngModel”,它不会引发错误,但是我无法在 formSubmit() 中访问它的值。

你能帮我解决这个问题吗?

谢谢。

【问题讨论】:

  • 根据this 线程这是已知问题。

标签: angular nebular ngx-admin


【解决方案1】:

使用reactive forms 方法可以正常工作。

应用内模块导入:import { ReactiveFormsModule } from '@angular/forms';

添加到imports数组ReactiveFormsModule

更改您的 html

<form [formGroup]="frm" (ngSubmit)="onSubmit()">
  <nb-select formControlName="models" multiple>
      <nb-option value="1">Item 1</nb-option>
      <nb-option value="2">Item 2</nb-option>
      <nb-option value="3">Item 3</nb-option>
      <nb-option value="4">Item 4</nb-option>
  </nb-select>
  <button type="submit">Submit</button>
</form>

在 TS 文件中创建 FormGroup:

  frm: FormGroup;

  constructor(fb: FormBuilder) {
    this.frm = fb.group({
      models: []
    });
  }

提交:

  onSubmit() {
    console.log(this.frm.value);
  }

【讨论】:

  • 谢谢你,先生,它就像一个魅力!难道没有另一种方法可以自动创建FormGroup吗?我的意思是,ts 文件中的代码更少,html 文件中的代码可能更多,就像我在问题中发布的那样。这是我的第一个 Angular 项目,我需要在 ts 文件中创建、编写和维护更少的代码,这对我来说真的是一个救命稻草。再次感谢您的帮助。
  • @velediqa 检查此answer 以进行快速比较和稍旧的video。我的建议是投资 Reactive Forms,从长远来看它会受益。
  • 我将使用响应式表单。谢谢。
猜你喜欢
  • 1970-01-01
  • 2017-10-18
  • 2019-07-08
  • 2021-06-02
  • 2019-10-01
  • 2019-06-19
  • 2015-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多