Angular 16中input无法绑定ngModel的问题求助
解决Angular Language Service提示“can't bind to 'ngModel' since it isn't a known property of 'input'”问题
我使用Angular 16版本和VSCode开发,代码能正常运行,但Angular Language Service持续提示错误:
can't bind to 'ngModel' since it isn't a known property of 'input'
项目文件配置
app.module.ts(初始配置)
import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { BrowserModule } from '@angular/platform-browser'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { HeaderComponent } from './components/header/header.component'; import { ProductsModule } from './modules/products/products.module'; import { SalesModule } from './modules/sales/sales.module'; @NgModule({ declarations: [AppComponent, HeaderComponent], imports: [BrowserModule, AppRoutingModule, ProductsModule, SalesModule], bootstrap: [AppComponent] }) export class AppModule { }
app-routing.module.ts
import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { NotFoundComponent } from './components/not-found/not-found.component'; const routes: Routes = [ { path: '', redirectTo: '/products', pathMatch: 'full' }, { path: 'sales', loadChildren: () => import('./modules/sales/sales.module').then(m => m.SalesModule) }, { path: 'products', loadChildren: () => import('./modules/products/products.module').then(m => m.ProductsModule) }, { path: '**', component: NotFoundComponent } ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] }) export class AppRoutingModule { }
sales.module.ts
import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { ReactiveFormsModule } from '@angular/forms'; import { SalesRoutingModule } from './sales-routing.module'; import { AddSaleComponent } from 'src/app/components/sales/add-sale/add-sale.component'; import { SalesService } from 'src/app/services/sales.service'; import { BrowserModule } from '@angular/platform-browser'; @NgModule({ declarations: [ AddSaleComponent ], imports: [ BrowserModule, CommonModule, SalesRoutingModule, FormsModule, ReactiveFormsModule ], providers: [SalesService] }) export class SalesModule { }
sales-routing.module.ts
import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { AddSaleComponent } from 'src/app/components/sales/add-sale/add-sale.component'; const routes: Routes = [ { path: '', component: AddSaleComponent, }, ]; @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule], }) export class SalesRoutingModule {}
add-sale.component.html
Favorite Color: <input type="text" [(ngModel)]="favoriteColor">
add-sale.component.ts
import { Component } from '@angular/core'; @Component({ selector: 'app-add-sale', templateUrl: './add-sale.component.html', styleUrls: ['./add-sale.component.scss'], }) export class AddSaleComponent { favoriteColor = ''; }
已尝试的操作
- 移除app.module.ts中的ProductsModule和SalesModule,导入FormsModule,但问题仍存在。
解决建议
移除子模块中的BrowserModule:
懒加载子模块(如SalesModule)不应导入BrowserModule,该模块仅需在根模块AppModule中导入。将SalesModule的imports数组中的BrowserModule删除,保留CommonModule即可。修改后的SalesModule imports部分:imports: [ CommonModule, SalesRoutingModule, FormsModule, ReactiveFormsModule ]重启Angular Language Service:
- 打开VSCode命令面板(Ctrl+Shift+P),执行
Angular: Restart Angular Language Service - 若无效,直接重启VSCode,或删除项目根目录下的
.angular缓存文件夹后重新打开项目。
- 打开VSCode命令面板(Ctrl+Shift+P),执行
确认懒加载模块的导入逻辑:
保持AppModule中不直接导入懒加载模块(如SalesModule、ProductsModule),由路由的loadChildren负责懒加载,避免模块重复导入冲突。检查组件声明唯一性:
确保AddSaleComponent仅在SalesModule的declarations数组中声明,未在其他模块重复声明。
内容的提问来源于stack exchange,提问作者Farzan Najipour
相关产品推荐
相关产品推荐

