我的组件中有一个简单的输入,它使用[(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";
}
有时,当您尝试在不同的模块中使用未共享的模块中的组件时,会出现此错误。
例如,您有两个模块,分别带有module.componentA.component.ts和module.componentC.component.ts,您尝试使用module2内模板中module.componentA.component.ts中的选择器(例如<module1 componentA[someInputVariableInModule1]=“variableFromHTTPRequestInModule2”>),它将抛出错误:someInputVariableInModule1在module.componentA.component.ts中不可用-即使您在module.componentA中有@Input()someInputVariable InModule1。
如果发生这种情况,您希望共享module.componentA,以便在其他模块中访问。因此,如果在sharedModule内共享module1.componentA,则module1.companentA将在其他模块内(在module1之外)可用,并且导入sharedModules的每个模块都可以访问其模板中注入@Input()声明变量的选择器。
有时,即使我们已经导入了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 {}