Угловой разговор о дате в момент для formControl

Мне нужно использовать момент с датами. Я запутался здесь и вызвал много ошибок. Я пытаюсь ввести момент с датами в свой код, ничего не нарушая. Это рабочий код, отлично работает в Chrome, но в IE год отображается неверно. Для года вместо 19, как 2019, он показывает 1919. После исследования я узнал, что эту проблему можно решить с помощью момента.

// Дата начала должна быть зафиксирована

  <div class="schedule-release-date" *ngIf="formControls['releaseEntryType'].value === 1">
      <mat-form-field [floatLabel]="">
        <input required matInput [matDatepicker]="releaseDatePicker" placeholder="Release Date" [formControl]="formControls['startDate']">
        <mat-datepicker-toggle matSuffix [for]="releaseDatePicker"></mat-datepicker-toggle>
        <mat-datepicker #releaseDatePicker></mat-datepicker>
      </mat-form-field>
    </div>


 entryTypeChanged(event: MatSelectChange) {
    if (
      event.value &&
      event.value === 1
    ) {
      this.displayDatePickerForScheduleReleases = true;
      if (!(this.releaseManagementInteractiveForm.get('startDate'))) {
        this.releaseManagementInteractiveForm.addControl(
          'startDate',
          new FormControl(new Date().toISOString())
        );
      } else {
        this.releaseManagementInteractiveForm.get('startDate').setValue(new Date().toISOString());
      }
    } else {
      this.displayDatePickerForScheduleReleases = false;
      this.releaseManagementInteractiveForm.removeControl(
        'startDate'
      );
    }
  }

person developer    schedule 28.01.2020    source источник


Ответы (2)


Вам необходимо установить библиотеку моментов

npm install moment  --save

Импортируйте и используйте в вашем файле Typescript

import * as moment from 'moment';

в случае, если вы получаете ошибку при импорте использования

import  moment from 'moment';

для вашего случая используйте заменить

 new Date() to  moment.utc()

решает вашу проблему

person shashi kumar    schedule 28.01.2020
comment
Спасибо, не могли бы вы показать мне здесь, как я могу использовать здесь moment.js. Я использовал момент, но меня путают с формами Angular stackblitz.com/edit/datepicker-angular2 - person developer; 28.01.2020
comment
что именно ты хочешь сделать - person shashi kumar; 28.01.2020
comment
mat-datepicker загружается объектом Date, почему вы конвертируете в строку? - person Eliseo; 28.01.2020
comment
@shashikumar не мой код, извините if (releaseEntryTypeId === 1) {this.releaseModificationItem.releaseManagementInteractiveForm .get ('startDate') .setValue (moment.utc (this.releaseDetails.startDate) .toISOString ()); } Я изменил это, но у меня это не сработало - person developer; 28.01.2020
comment
@Eliseo - это существующий код, который мне нужно исправить, я думаю, они сделали это, чтобы сделать согласованный формат - person developer; 28.01.2020

Если вы хотите использовать момент для дат во всем приложении, вам следует импортировать MatMomentDateModule в app.module вместо MatNativeDateModule

@NgModule({
  imports: [MatDatepickerModule, MatMomentDateModule],
})
export class AppModule {}

это зависит от момента, поэтому вам также необходимо установить момент.

Угловой материал - выбор даты настройки реализации и формата даты

person andbjer    schedule 28.01.2020