Ошибка кода Visual Studio TS2305 с примером moment.js из учебника по угловым материалам - PullRequest
0 голосов
/ 03 июля 2018

Я попробовал следующий код из https://material.angular.io/components/datepicker/overview#choosing-a-date-implementation-and-date-format-settings (см. Ниже). Это соответствует, и я могу запустить код, но я получаю ошибку в коде Visual Studio, которая говорит, что «значение по умолчанию не является экспортированным членом момента. Я использую Visual Studio Code 1.24.1

import { default as _rollupMoment} from 'moment';

enter image description here

ОШИБКА в файле src / app / component.ts (20,10): ошибка TS2305: у модуля "" ../frontend/node_modules/moment/moment "" нет экспортируемого элемента "по умолчанию".

import {Component} from '@angular/core';
import {FormControl} from '@angular/forms';
import {MAT_MOMENT_DATE_FORMATS, MomentDateAdapter} from '@angular/material-moment-adapter';
import {DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE} from '@angular/material/core';

// Depending on whether rollup is used, moment needs to be imported differently.
// Since Moment.js doesn't have a default export, we normally need to import using the `* as`
// syntax. However, rollup creates a synthetic default module and we thus need to import it using
// the `default as` syntax.
import * as _moment from 'moment';
// tslint:disable-next-line:no-duplicate-imports
import {default as _rollupMoment} from 'moment';

const moment = _rollupMoment || _moment;

/** @title Datepicker that uses Moment.js dates */
@Component({
  selector: 'datepicker-moment-example',
  templateUrl: 'datepicker-moment-example.html',
  styleUrls: ['datepicker-moment-example.css'],
  providers: [
    // `MomentDateAdapter` and `MAT_MOMENT_DATE_FORMATS` can be automatically provided by importing
    // `MatMomentDateModule` in your applications root module. We provide it at the component level
    // here, due to limitations of our example generation script.
    {provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]},
    {provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS},
  ],
})
export class DatepickerMomentExample {
  // Datepicker takes `Moment` objects instead of `Date` objects.
  date = new FormControl(moment([2017, 0, 1]));
}

Ответы [ 4 ]

0 голосов
/ 16 апреля 2019

Примечание: если у вас возникли проблемы с импортом момента, попробуйте добавить "allowSyntheticDefaultImports": true в параметрах компилятора в файле tsconfig.json, а затем используйте синтаксис

https://momentjs.com/docs/#/use-it/typescript/

у меня это сработало :) 1006 *

0 голосов
/ 02 августа 2018

Я только что прокомментировал второе утверждение следующим образом:

import * as _moment from 'moment';
// import { default as _rollupMoment} from 'moment';
// const moment = _rollupMoment || _moment;
const moment = _moment;
0 голосов
/ 30 ноября 2018

У меня такая же ошибка. Затем я изменяю свой код следующим образом:

import * as moment from 'moment';
type Moment = moment.Moment;
const moment1 = moment;

export class AppComponent {
date = new FormControl(moment1());
}

И это работает.

Надеюсь, это поможет.

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

Я оставил второй оператор импорта для момента, как предложено в Импорт момента в Angular дает ошибку . Теперь это работает ...

...