Angular Material 6中的CustomeDateAdapter

Ren*_*ler 4 angular-material angular angular6

我已经实现了一个CustomDateAdapter,如下所述:https : //medium.com/@esanjiv/working-with-custom-dateadapter-for-angular-material-2-datepicker-76d4446277dc

现在,我正在进行Angular Material 6迁移,并且出现以下错误

core.js:1598 ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'TRIDENT' of undefined
TypeError: Cannot read property 'TRIDENT' of undefined
at CustomDateAdapter.NativeDateAdapter [as constructor] (core.es5.js:792)
at new CustomDateAdapter (custom-date-adapter.ts:21)
at _createClass (core.js:9262)
...
Run Code Online (Sandbox Code Playgroud)

core.es5.js第792行是这样的:

_this.useUtcForDisplay = !platform.TRIDENT;
Run Code Online (Sandbox Code Playgroud)

似乎平台未定义。

我注意到NativeDateAdapter的构造函数已在材料6中进行了更改,它还需要一个平台作为输入。

constructor(matDateLocale: string, platform: Platform);
Run Code Online (Sandbox Code Playgroud)

我缺少什么?如何在Angular Material 6中实现CustomDateAdapter?

Lon*_*ren 5

我有同样的问题。这是我的解决方法。

// in your shared or main.module.ts
// … other imports
import {Platform, PlatformModule} from '@angular/cdk/platform';

@NgModule({
  imports: [
    // …
    PlatformModule
  ],
  exports: [
    // …
    PlatformModule
  ],
  providers: [
    {provide: DateAdapter, useClass: YourCustomDateAdapter, deps: [MAT_DATE_LOCALE, Platform]},
  ]
 });
 export class SharedModule {
}
Run Code Online (Sandbox Code Playgroud)

而且您还没有覆盖YourCustomDateAdapter的构造函数。