3

在我新创建的 Angular 应用程序中,我正在尝试使用 mattlewis92 的 angular-calendar 创建他的日历。我已经复制了他 github 上列出的所有步骤和代码:https ://mattlewis92.github.io/angular-calendar/#/kitchen-sink但我不断收到一条错误消息Error: StaticInjectorError(AppModule)[CalendarDayViewComponent -> Date Adapter]: NullInjectorError: No provider for DateAdapter!

在我的app.module.ts中,我有这个,并且还导入了所有这些:

imports: [
    CalendarModule.forRoot({
        provide: DateAdapter,
        useFactory: adapterFactory
    })
]

我唯一能看到的问题是我也使用 Moment,所以我的提供程序中有这个:

{ provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] }

任何帮助将不胜感激为什么会发生这种情况或我将如何解决它,谢谢!

4

2 回答 2

2

尝试这个。为我工作。日历需要某种形式的 dateAdapter,您可以使用如下所示的时刻。

import { CalendarModule, DateAdapter } from 'angular-calendar';
import { adapterFactory } from 'angular-calendar/date-adapters/moment';
import * as moment from 'moment';

export function momentAdapterFactory() {
  return adapterFactory(moment);
};
imports: [
    CalendarModule.forRoot({ provide: DateAdapter, useFactory: momentAdapterFactory })
]
于 2019-12-04T13:56:33.800 回答
1

我猜你正在混合 DateAdapter 符号。

在您的日历模块中,使用:

import { DateAdapter } from "angular-calendar";

在您的角度材料模块中,使用:

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

其次,如果您想将 angular-calendar 与 date-fns 一起使用,您当前的代码应该没问题。如果你想使用 angular-calendar 和 moment,你应该参考这个官方演示

日历模块如下所示:

export function momentAdapterFactory() {
  return adapterFactory(moment);
}

@NgModule({
  imports: [
    CommonModule,
    CalendarModule.forRoot(
      {
        provide: DateAdapter,
        useFactory: momentAdapterFactory,
      },
      {
        dateFormatter: {
          provide: CalendarDateFormatter,
          useClass: CalendarMomentDateFormatter,
        },
      }
    )
  ],
  providers: [
    {
      provide: MOMENT,
      useValue: moment,
    },
  ],
})
export class MyCalendarModule {}
于 2020-10-12T10:56:11.250 回答