moment
является сторонним глобальным ресурсом. В данный момент объект живет window
в браузере. Поэтому это не правильно import
в вашем приложении angular2. Вместо этого включите<script>
включите в ваш html тег, который будет загружать файл moment.js.
Чтобы сделать TypeScript счастливым, вы можете добавить
declare var moment: any;
в верхней части ваших файлов, где вы используете его, чтобы остановить ошибки компиляции, или вы можете использовать
///<reference path="./path/to/moment.d.ts" />
или используйте tsd для установки файла moment.d.ts, который TypeScript может найти самостоятельно.
пример
import {Component} from 'angular2/core';
declare var moment: any;
@Component({
selector: 'example',
template: '<h1>Today is {{today}}</h1>'
})
export class ExampleComponent{
today: string = moment().format('D MMM YYYY');
}
Просто убедитесь, что добавили тег script в ваш html, или момент не будет существовать.
<script src="node_modules/moment/moment.js" />
Загрузка модуля moment
Сначала вам нужно настроить загрузчик модулей. такой как System.js, чтобы загружать файлы commonjs.
System.config({
...
packages: {
moment: {
map: 'node_modules/moment/moment.js',
type: 'cjs',
defaultExtension: 'js'
}
}
});
Затем импортировать момент в файл, где необходимо использовать
import * as moment from 'moment';
или
import moment = require('moment');
РЕДАКТИРОВАТЬ:
Есть также варианты с некоторыми упаковщиками, такими как Webpack или SystemJS builder или Browserify, которые будут держать момент в стороне от объекта окна. Для получения дополнительной информации об этом, пожалуйста, посетите их соответствующие веб-сайты для обучения.