角材料:MatDatepicker:找不到DateAdapter提供程序


73

我正在尝试在Angular Material中使用Datepicker组件。这是我的HTML代码:

<input matInput [matDatepicker]="picker" placeholder="Choose a date" disabled>
<mat-datepicker #picker disabled="false"></mat-datepicker>

但是,它对我不起作用,并且出现以下错误:

错误:MatDatepicker:未找到DateAdapter的提供程序。

错误消息告诉我,我需要导入MatNativeDateModule和MatDatepickerModule,但是我已经做到了。这是我从app.module.ts下面的导入代码:

import {
    MatFormFieldModule,
    MatMenuModule,
    MatCheckboxModule,
    MatIconModule,
    MatDatepickerModule,
    MatNativeDateModule
} from '@angular/material';

还有什么我想念的吗?

Answers:


135

您需要同时导入MatDatepickerModuleMatNativeDateModule未导入,并MatDatepickerModule在提供者下添加

 imports: [
    MatDatepickerModule,
    MatNativeDateModule 
  ],
  providers: [  
    MatDatepickerModule,  
  ],

1
Md前缀已弃用。请提供使用Mat语法的解决方案。
Tomasz Kula

3
就我而言,我还需要从“ @ angular / material / datepicker”导入{MatDatepickerModule},从API导入它们;从“ @ angular / material /”导入{MatNativeDateModule};
Max Wiederholt

这个工程谢谢你!但是,如果我们使用单独的文件来导入材料怎么办?我们可以在那里设置提供商吗?我是新来的!
Sujeewa K. Abeysinghe

谢谢你,我刚刚从核心和多数民众的作品添加MatNativeDateModule进口
Kindth

48

Angullar 8,9

import { MatDatepickerModule } from '@angular/material/datepicker';
import { MatNativeDateModule } from '@angular/material/core';

Angular 7及以下

import { MatDatepickerModule, MatNativeDateModule } from '@angular/material';

您需要在导入下导入MatDatepickerModule和MatNativeDateModule,并在提供程序下添加MatDatepickerModule

imports: [
    MatDatepickerModule,
    MatNativeDateModule 
  ],
  providers: [  
    MatDatepickerModule,
    MatNativeDateModule  
  ],

感谢Angular 9的帮助。BTW从'@ angular / material'导入{MatDatepickerModule,MatNativeDateModule}; 工作8
glant

为什么需要将它们添加到provider数组?
NicuVlad

如果不是,则必须明智地注入每个组件
lilan silva

15

只需导入

MatNativeDateModule

随着

MatDatepickerModule

在app.module.ts或app-routing.module.ts上。

@NgModule({
imports: [
    MatDatepickerModule,
    MatNativeDateModule 
]
})

6

官方文档:错误:MatDatepicker:未找到DateAdapter / MAT_DATE_FORMATS的提供程序

datepicker被构建为与日期实现无关。这意味着可以使其与多种不同的日期实现一起使用。但是,这也意味着开发人员需要确保为日期选择器提供适当的组件,以便与他们选择的实现一起使用。确保这一点的最简单方法就是导入预制模块之一:MatNativeDateModule,MatMomentDateModule。

固定:

@NgModule({
  imports: [MatDatepickerModule, MatNativeDateModule],
})
export class MyApp {}

根据文档:We highly recommend using the MomentDateAdapter or a custom DateAdapter that works with the formatting/parsing library of your choice.MatNativeDateModule is based off of the functionality available in JavaScript's native Date object, and is thus not suitable for many locales. One of the biggest shortcomings of the native Date object is the inability to set the parse format.
hogan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.