Angular AppModule导入MatDatepickerModule报无法静态确定值错误
报错根因
这个静态解析错误是MatDatepickerModule的导入路径写错导致的:你当前从@angular/material/input路径导入该模块,但这个包下根本没有导出MatDatepickerModule,Angular编译时无法拿到合法的模块引用,就会抛出「值无法静态确定」的报错。
补充:@angular/material/input包下导出的是MatInputModule,和日期选择器模块无关。
另外你贴的源码还存在基础语法问题:漏写了@NgModule()装饰器开头,也没有写declarations组件声明数组,直接把imports数组暴露在外层,这也会触发编译错误。
修复方法
- 先修正导入路径,从正确的包引入
MatDatepickerModule:// 错误写法 // import {MatDatepickerModule} from '@angular/material/input'; // 正确写法 import { MatDatepickerModule } from '@angular/material/datepicker'; - 补全日期选择器的依赖模块。Angular Material的日期选择器不能单独运行,必须搭配输入框模块、日期适配器模块使用,需要额外引入:
MatInputModule(来自@angular/material/input)MatNativeDateModule(原生日期适配,来自@angular/material/core)
- 补全
@NgModule装饰器的完整结构,把所有自定义组件加入declarations数组。
修正后完整代码
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import {HttpClientModule} from '@angular/common/http'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { FormsModule } from '@angular/forms'; import { FrontpageComponent } from './frontpage/frontpage.component'; import { AdministratorComponent } from './administrator/administrator.component'; import { AdminCustomerComponent } from './admin-customer/admin-customer.component'; import { Ng2SearchPipeModule } from 'ng2-search-filter'; import { DatePipe } from '@angular/common'; import { CategoryComponent } from './category/category.component'; import { BookComponent } from './book/book.component'; import { LoginComponent } from './login/login.component'; import { ContactComponent } from './contact/contact.component'; import { CategoryDetailsComponent } from './category-details/category-details.component'; import { BookDetailsComponent } from './book-details/book-details.component'; import { LoanComponent } from './loan/loan.component'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { MatDatepickerModule } from '@angular/material/datepicker'; import { MatInputModule } from '@angular/material/input'; import { MatNativeDateModule } from '@angular/material/core'; @NgModule({ declarations: [ AppComponent, FrontpageComponent, AdministratorComponent, AdminCustomerComponent, CategoryComponent, BookComponent, LoginComponent, ContactComponent, CategoryDetailsComponent, BookDetailsComponent, LoanComponent ], imports: [ BrowserModule, AppRoutingModule, HttpClientModule, FormsModule, Ng2SearchPipeModule, BrowserAnimationsModule, MatInputModule, MatDatepickerModule, MatNativeDateModule ], providers: [DatePipe], bootstrap: [AppComponent] }) export class AppModule { }
替换完文件后重新执行ng serve启动项目,报错就会消失。
内容的提问来源于stack exchange,提问作者BILAL
相关产品推荐
相关产品推荐

