Angular已导入FormsModule仍报错无法绑定ngModel到input属性怎么办?
问题原因排查与解决方案
核心错误点
你对Angular NgModule的数组规则使用错误,LoginComponent作为普通组件,被错误放到了AppModule的imports和providers数组中,导致模块依赖解析异常,即便导入了FormsModule也无法正常作用于LoginComponent。
Angular NgModule各数组的正确作用:
declarations:仅可放置当前模块管理的组件、指令、管道imports:仅可放置其他模块类,用于导入依赖能力providers:仅可放置可注入的服务、拦截器等提供商
分场景解决方案
场景1:LoginComponent归AppModule直接管理(无单独LoginModule)
- 从AppModule的
imports、providers数组中删除LoginComponent项 - 将
LoginComponent添加到AppModule的declarations数组中 - 重启开发服务即可,此时AppModule已导入的FormsModule可正常作用于LoginComponent的双向绑定语法
场景2:LoginComponent归单独的LoginModule管理
- 从AppModule的
imports、providers数组中删除LoginComponent项 - 确认LoginModule的
declarations数组中已添加LoginComponent - 确认LoginModule的
imports数组中已导入FormsModule - 若需要在AppModule范围内使用LoginComponent,将
LoginModule添加到AppModule的imports数组中即可 - 重启开发服务生效
额外注意项
- 同一个组件不可在多个模块的
declarations数组中重复声明 - 若LoginModule为懒加载模块,必须在LoginModule自身的
imports数组导入FormsModule,无法继承AppModule导入的能力
内容的提问来源于stack exchange,提问作者J.Noob
相关产品推荐
相关产品推荐

