无法绑定到'ngValue',因为它不是'option'的已知属性

时间:2018-01-25 14:04:10

标签: angular angular-forms

我正在尝试在Angular 5中实现select,但我不断得到这个

enter image description here

我已经尝试了很多StackOverflow问题,唯一的区别是 - 我的组件位于应用程序内的另一个模块中,最后注入主模块。我也尝试在内部模块中注入FormsModule。我尝试导入ReactiveFormsModule但无效。

我已将FormsModule添加到此类

的导入中
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { AppRoutingModule } from './app-routing.module';

@NgModule({
  declarations: [
    ...CombineComponents
  ],
  imports: [
    BrowserModule,
    FormsModule,
    AppRoutingModule,
    HttpClientModule
  ]
});

这是我的组件标记

<label for="ctn" class="d-inline-block pl-1 semi-bold">Current active number</label>
  <select
    #selectElem
    class="custom-select"
    id="ctn"
    (change)="onCTNChange(selectElem.value)"
    formControlName="state"
  >
    <option value="" disabled>Choose a state</option>
    <option *ngFor="let ctn of availableCTN" [ngValue]="ctn.value">
      {{ctn.text}}
    </option>
  </select>

3 个答案:

答案 0 :(得分:14)

使用value

[value]="ctn.value"

答案 1 :(得分:0)

我犯了一个非常愚蠢的错误并陷入了这个问题。

  1. 而不是使用[ngValue]="ctn.value"
  2. 我应该使用[value]我在父模块中导入formsModule,我应该在子模块中导入它以使[(ngModel)]工作
  3. 如果我们想要显示默认选择,
  4. [value]应为[(value)]
  5. 所以我的最终组件代码是。

    <label for="ctn" class="d-inline-block pl-1 semi-bold">Current active number</label>
      <select
        #selectCTN
        class="custom-select"
        id="ctn"
        [(ngModel)]="selectedCTN"
        (change)="onCTNChange(selectCTN.value)"
      >
        <option value="" disabled>Choose a state</option>
        <option *ngFor="let ctn of availableCTN" [(value)]="ctn.value">
          {{ctn.text}}
        </option>
      </select>
    

答案 2 :(得分:0)

[value] 在这种情况下会起作用。就我而言,我还没有使用 formmodule,只是在标签中使用它,工作正常。