"момент" не имеет экспортируемого члена "по умолчанию"
Я использую moment.js
чтобы изменить локальный формат даты для моего приложения, но получаю ошибку:
"момент" не имеет экспортируемый элемент "по умолчанию" при импорте библиотеки.
Ниже мой код:
import {Inject, Injectable, Optional} from '@angular/core';
import {DateAdapter, MAT_DATE_LOCALE, MatDateFormats} from '@angular/material';
import * as _moment from 'moment';
import {default as _rollupMoment, Moment} from 'moment';
const moment = _rollupMoment || _moment;
2 ответа
Попробуйте добавить "allowSyntheticDefaultImports": true to your tsconfig.json
Кажется, у вас проблемы с импортом момента
Как видно из документации, для Typescript 2.x попробуйте добавить "moduleResolution": "node"
в compilerOptions
в вашем tsconfig.json
файл, а затем используйте любой из приведенного ниже синтаксиса:
import * as moment from 'moment';
import moment = require('moment');
PS: убедитесь, что вы установили moment.js
с npm
:
npm install --save moment
Вот вам полное решение этой проблемы:
Первый:
npm install moment --save
npm install @angular/material-moment-adapter
Второй:
в вашем package.json в разделе dependencies убедитесь, что у вас есть следующий код:
"@angular/material-moment-adapter": "^8.2.3",
В третьих:
в вашем файле tsconfig.json в разделе compileroptions добавьте следующее:
"allowSyntheticDefaultImports": true
Четвертый:
Измените свой компонент с помощью следующих кодов:
import { MomentDateAdapter } from '@angular/material-moment-adapter';
import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
import * as _moment from 'moment';
import { default as _rollupMoment } from 'moment';
const moment = _rollupMoment || _moment;
export const MY_FORMATS = {
parse: {
dateInput: 'LL',
},
display: {
dateInput: 'YYYY-MM-DD',
monthYearLabel: 'YYYY',
dateA11yLabel: 'LL',
monthYearA11yLabel: 'YYYY',
},
};
@Component({
selector: 'app-newsfeedform',
templateUrl: './newsfeedform.component.html',
styleUrls: ['./newsfeedform.component.css'],
providers: [
{ provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
],
})
Пятое:
В вашем файле component.html datepicker, как показано ниже:
<mat-form-field appearance="outline" fxFlex>
<input matInput [matDatepicker]="publishdate" placeholder="Publish Date"
formControlName="publishdate">
<mat-datepicker-toggle matSuffix [for]="publishdate"></mat-datepicker-toggle>
<mat-datepicker #publishdate></mat-datepicker>
</mat-form-field>
То есть вы можете настроить Angular material datepicker в любом формате, который хотите, просто измените формат, указанный выше.
Добавьте следующую строку в
tsconfig.json
файл:
"allowSyntheticDefaultImports": true
В gulpfile.js в разделе externals добавить'moment/moment'
а также 'moment'
и то и другое
externals: [
'moment/moment',
'moment'
]