CustomeDateAdapter в угловой материал 6 - PullRequest
0 голосов
/ 30 мая 2018

Я реализовал 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)
...

core.es5.JS строка 792 выглядит следующим образом:

_this.useUtcForDisplay = !platform.TRIDENT;

Кажется, что платформа не определена.

Я заметил, что конструктор NativeDateAdapter изменился в материале 6, он также требует платформы в качестве входных данных.

constructor(matDateLocale: string, platform: Platform);

Чего мне не хватает?Как я могу реализовать CustomDateAdapter в Angular Material 6?

Ответы [ 2 ]

0 голосов
/ 11 июля 2018

У меня была такая же проблема.Вот мое исправление.

// 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 {
}

И вы еще не переопределили конструктор YourCustomDateAdapter.

0 голосов
/ 05 июня 2018

Я решил эту проблему, создав в своем коде объект Platform

export class CustomDateAdapter extends NativeDateAdapter {

  constructor(matDateLocale: string) {
    super(matDateLocale, new Platform());
  }

...

}

Другой вариант - предоставить фабрике

@NgModule({
  declarations: [...],
  imports: [...],
  providers: [
    {
      provide: Platform,
      useFactory: platformProviderFactory,
      multi: true
    }
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

export function platformProviderFactory() {
  return () => new Platform();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...