Angular Material DatePicker - 错误:MdDatepicker:找不到DateAdapter的提供程序

时间:2017-09-21 07:21:05

标签: angular material

关于材料文档,我:

import {MdDatepickerModule} from '@angular/material';

在根模块中并将其添加到提供程序列表中,但是coudln不会在模板中使用它。得到了这个错误:

  

未捕获(承诺):错误:MdDatepicker:找不到提供商   DateAdapter。您必须导入以下模块之一   应用程序root:MdNativeDateModule,或提供自定义   实施

所以根据它,我删除了最后一个导入并添加了:

import {MdNativeDateModule} from '@angular/material';

现在,看起来,它的确有效。为什么材料文档会导致导入MdDatepickerModule,而不是MdNativeDateModule?它们有何区别?

2 个答案:

答案 0 :(得分:22)

The example in the docs实际上导入MdNativeDateModule。单击plunker链接并查看main.ts文件。文档并不像首选那样明确。

MdDatepickerModule是包含组件本身的模块。该组件与您使用它的日期的实现无关。

例如,如果您希望使用Moment.JS dates而不是JavaScript的本地Date对象,则可以编写自己的类来处理Moment.JS对象。这解释为here

但是,如果您只是想使用JavaScript的Date个对象,则需要使用NativeDateAdapter中已包含的@angular/material类。此课程由MdNativeDateModule提供。

MdDatepickerModule不提供它,因为该模块仅处理UI组件,如果您使用的是Moment.JS对象,则不需要在应用程序中使用NativeDateAdapter

答案 1 :(得分:6)

导入后需要从@ angular / material导入MatNativeDateModule,你必须在angular material

上看到的@NgModule中导入和导出它