我的组件中有一个简单的输入,它使用[(ngModel)]:
<input type="text" [(ngModel)]="test" placeholder="foo" />
当我启动应用程序时,即使没有显示组件,也会出现以下错误。
zone.js:461未处理的Promise拒绝:模板解析错误:无法绑定到“ngModel”,因为它不是“input”的已知属性。
以下是组件。ts:
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { Intervention } from '../../model/intervention';
@Component({
selector: 'intervention-details',
templateUrl: 'app/intervention/details/intervention.details.html',
styleUrls: ['app/intervention/details/intervention.details.css']
})
export class InterventionDetails
{
@Input() intervention: Intervention;
public test : string = "toto";
}
有时,即使我们已经导入了BrowserModule、FormsModule和其他相关模块,我们仍然可能会收到相同的错误。
然后我意识到我们需要按顺序导入它们,这在我的案例中是缺失的。因此,顺序应该类似于BrowserModule、FormsModule和ReactiveFormsModul。
根据我的理解,功能模块应该遵循Angular的基本模块。
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
@NgModule({
imports: [
BrowserModule,
FormsModule,
ReactiveFormsModule
],
providers: [],
declarations: [
AppComponent
],
bootstrap: [AppComponent]
})
export class AppModule {}
要消除此错误,需要遵循两个步骤:
在应用程序模块中导入FormsModule将其作为@NgModule decorator中的导入值传递
基本上,app.module.ts文件应该如下所示:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import {AppChildComponent} from './appchild.component';
@NgModule({
imports: [ BrowserModule,FormsModule ],
declarations: [ AppComponent, AppChildComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }