“时刻”没有导出的成员“默认”

时间:2019-02-19 12:45:58

标签: angular typescript momentjs angular7 angular-moment

我正在使用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;

5 个答案:

答案 0 :(得分:12)

尝试在“ compilerOptions”下将"allowSyntheticDefaultImports": true添加到您的tsconfig.json

答案 1 :(得分:1)

您似乎无法导入片刻

您会看到in the documentation, 对于 Typescript 2.x ,请尝试在"moduleResolution": "node"文件的compilerOptions中添加tsconfig.json,然后使用以下任何语法:

import * as moment from 'moment';
import moment = require('moment');

PS:确保已将moment.jsnpm安装在一起:

npm install --save moment

答案 2 :(得分:0)

在这里,您将获得针对此问题的完整解决方案:

第一:

 npm install moment --save
 npm install @angular/material-moment-adapter

第二:

在package.json中的

依赖项下,确保您具有以下代码:

    "@angular/material-moment-adapter": "^8.2.3",

第三:

在您的tsconfig.json文件中的编译器选项下添加以下内容:

"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材质datepicker的任何格式,只需修改上面给出的格式即可。

答案 3 :(得分:0)

外部部分中的 gulpfile.js 中的

同时添加'moment/moment''moment'

externals: [
      'moment/moment',
       'moment'
   ]

答案 4 :(得分:0)

tsconfig.json文件中添加以下行:

"allowSyntheticDefaultImports": true