【问题标题】:MatDatepicker: No provider found for DateAdapter. You must import one of the following modules at your application root: MatNativeDateModuleMatDatepicker:未找到 DateAdapter 的提供程序。您必须在应用程序根目录中导入以下模块之一: MatNativeDateModule
【发布时间】:2019-06-08 06:08:14
【问题描述】:

我已经在我的 app.module.ts 文件中导入了 matdatepicker,但它仍然显示一些错误。我无法让材料组件工作。该按钮工作正常并使用角材料组件。但是当我使用 datepicker 时它不起作用。

app.module.ts 文件

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import{ HttpClientModule} from '@angular/common/http';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {MatTableModule} from '@angular/material/table';
import {MatDatepickerModule} from '@angular/material/datepicker';
import {MatButtonModule} from '@angular/material/button';
import {MatFormFieldModule} from '@angular/material/form-field';


import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { InactiveusersComponent } from './component/inactiveusers/inactiveusers.component';
import { CalendarComponent } from './component/calendar/calendar.component';
import { InactiveItemComponent } from './component/inactive-item/inactive-item.component';
import { NewtableComponent } from './component/newtable/newtable.component';

@NgModule({
  declarations: [
    AppComponent,
    InactiveusersComponent,
    CalendarComponent,
    InactiveItemComponent,
    NewtableComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    HttpClientModule,
    BrowserAnimationsModule,
    MatTableModule,
    MatDatepickerModule,
    MatButtonModule,
    MatFormFieldModule
  ],
  exports:[
    MatDatepickerModule,
    MatButtonModule
  ],
  providers: [MatFormFieldModule,MatDatepickerModule],
  bootstrap: [AppComponent]
})
export class AppModule { }

calendar.component.html

<input #startDate  type="date" name="startdate">
<input #endDate type="date"name="enddate">

<button (click)="sendRange(startDate.value,endDate.value)" mat-button color="primary">Submit</button>

<mat-form-field>
    <input matInput [matDatepicker]="picker" placeholder="Choose a date">
    <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
    <mat-datepicker #picker></mat-datepicker>
  </mat-form-field>

ERROR Error: MatDatepicker: No provider found for DateAdapter. You must import one of the following modules at your application root: MatNativeDateModule, MatMomentDateModule, or provide a custom implementation.
    at createMissingDateImplError (datepicker.js:37)
    at new MatDatepickerInput (datepicker.js:2344)
    at createClass (core.js:24577)
    at createDirectiveInstance (core.js:24386)
    at createViewNodes (core.js:34994)
    at callViewAction (core.js:35444)
    at execComponentViewsAction (core.js:35349)
    at createViewNodes (core.js:35023)
    at callViewAction (core.js:35444)
    at execComponentViewsAction (core.js:35349)

【问题讨论】:

标签: javascript angular typescript


【解决方案1】:

我知道了,这里工作正常只需导入 APP.MODULE.TS 文件中的模块

import {MatNativeDateModule} from '@angular/material/core';
imports: [

...

MatNativeDateModule 
],

【讨论】:

    【解决方案2】:

    我通过添加以下模块解决了这个问题:

    import {MatNativeDateModule} from '@angular/material';
    import { MatMomentDateModule } from "@angular/material-moment-adapter";
    

    在你的导入中

    imports: [
        ...
        MatDatepickerModule,
        MatButtonModule,
        MatFormFieldModule,
        MatNativeDateModule, MatMomentDateModule,
      ],
    

    我没有那么深入的材料角度我只遵循错误消息建议

    错误错误:MatDatepicker:未找到 DateAdapter 的提供程序。你 必须在您的应用程序根目录中导入以下模块之一: MatNativeDateModule、MatMomentDateModule,或者提供自定义 实施。

    注意:对于较新的 Angular 版本,您只需导入一个模块:

    import { MatNativeDateModule } from '@angular/material/core';
    
    ...
        imports: [
            ...
            MatDatepickerModule,
            MatButtonModule,
            MatFormFieldModule,
            MatNativeDateModule,
          ],
    

    改为:

    import {MatNativeDateModule} from '@angular/material';
    import { MatMomentDateModule } from "@angular/material-moment-adapter";
    ...
    imports: [
        ...
        MatDatepickerModule,
        MatButtonModule,
        MatFormFieldModule,
        MatNativeDateModule, MatMomentDateModule,
      ],
    

    【讨论】:

    • 我猜自发布后 API 发生了变化,现在是 - import {MatNativeDateModule} from '@angular/material/core';
    • 我猜他们又搞砸了。我将两者都导入了,但在 9.1.2 版中仍然出现错误...您现在需要将它们添加到应用程序模块中,而不是导入的模块中...:/适当的文档可以提供帮助...对吗?
    【解决方案3】:

    我知道了,这里工作正常 只需在 APP.MODULE.TS 文件中导入模块

    import {MatDatepickerModule} from '@angular/material/datepicker';
    import {MatNativeDateModule} from '@angular/material/core';
    import {MatInputModule} from '@angular/material/input';
    
    imports: [
    MatDatepickerModule
    ,MatNativeDateModule,MatInputModule
    ]
    
    HTML :
    You need to wrap element with
    
    Tag
    <form>
    <mat-form-field>
        <mat-label>Choose a date</mat-label>
        <input matInput [matDatepicker]="picker">
        <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
        <mat-datepicker #picker></mat-datepicker>
      </mat-form-field>
    

    【讨论】:

      【解决方案4】:

      我只是使用了第一个导入引用:

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

      另一个导入让我遇到了另一个我没有解决的错误,但这不是必需的。

      不要忘记将 MatNativeDateModule 添加到 app.module.ts 中的 imports 数组中。

      【讨论】:

        【解决方案5】:

        导入已更改。改用这个:

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

        【讨论】:

          【解决方案6】:
          import { MatDatepickerModule } from '@angular/material/datepicker';
           
          import {MatNativeDateModule} from '@angular/material/core';
              
          

          这对我来说很好用

          【讨论】:

            猜你喜欢
            • 2018-08-31
            • 2018-09-18
            • 2015-01-21
            • 2020-12-27
            • 1970-01-01
            • 1970-01-01
            • 2018-05-04
            • 2013-05-05
            • 2014-06-07
            相关资源
            最近更新 更多