我尝试使用它与typescript绑定:
npm install moment --save
typings install moment --ambient -- save
test.ts:
import {moment} from 'moment/moment';
如果没有:
npm install moment --save
test.ts:
var moment = require('moment/moment');
但是当我调用moment.format()时,我得到一个错误。
应该是简单的,谁能提供一个命令行/导入组合,将工作?
——2017年11月1日更新
Typings现在已弃用,被npm @types所取代。从现在开始,除了npm,获取类型声明将不需要任何工具。要使用Moment,您不需要通过@types安装类型定义,因为Moment已经提供了自己的类型定义。
因此,它简化为3个步骤:
1 -安装时刻,包括类型定义:
npm install moment --save
2 -在HTML文件中添加script标签:
<script src="node_modules/moment/moment.js" />
3 -现在你可以使用它了。时期。
today: string = moment().format('D MMM YYYY');
——原创答案
这只需要3个步骤:
1 -安装力矩定义- *.d。ts文件:
typings install --save --global dt~moment dt~moment-node
2 -在HTML文件中添加script标签:
<script src="node_modules/moment/moment.js" />
3 -现在你可以使用它了。时期。
today: string = moment().format('D MMM YYYY');
对于angar2 RC5,这为我工作…
第一次安装时刻通过NPM
npm install moment --save
然后在你想要使用它的组件中导入moment
import * as moment from 'moment';
最后,在systemjs.config.js中配置"map"和"packages"
// map tells the System loader where to look for things
var map = {
....
'moment': 'node_modules/moment'
};
// packages tells the System loader how to load when no filename and/or no extension
var packages = {
...
'moment': { main:'moment', defaultExtension: 'js'}
};
对于ANGULAR CLI用户
使用外部库在这里的文档中:
https://github.com/angular/angular-cli/wiki/stories-third-party-lib
Simply install your library via
npm install lib-name --save
and import it in your code. If the library does not include typings,
you can install them using:
npm install lib-name --save
npm install @types/lib-name --save-dev
Then open src/tsconfig.app.json and add it to the types array:
"types":[ "lib-name" ]
If the library you added typings for is only to be used on your e2e
tests, instead use e2e/tsconfig.e2e.json. The same goes for unit tests
and src/tsconfig.spec.json.
If the library doesn't have typings available at @types/, you can
still use it by manually adding typings for it:
First, create a typings.d.ts file in your src/ folder.
This file will be automatically included as global type definition.
Then, in src/typings.d.ts, add the following code:
declare module 'typeless-package';
Finally, in the component or file that uses the library, add the
following code:
import * as typelessPackage from 'typeless-package';
typelessPackage.method();
Done. Note: you might need or find useful to define more typings for
the library that you're trying to use.
2017年4月更新:
从版本2.13.0开始,Moment包含了一个typescript定义文件。https://momentjs.com/docs/#/use-it/typescript/
只要用npm在你的控制台类型中安装它
npm install --save moment
然后在你的Angular应用中,导入就像这样简单:
import * as moment from 'moment';
就是这样,你得到了完全的Typescript支持!
额外编辑:要在Typescript中输入一个变量或属性Moment,你可以这样做,例如:
let myMoment: moment.Moment = moment("someDate");
angular2-moment库有像{{myDate | amTimeAgo}}这样的管道用于.html文件中。
这些管道也可以作为组件类(.ts)文件中的Typescript函数来访问。首先按照提示安装库:
npm install --save angular2-moment
在node_modules/angular2-moment现在将是“.pipe.d”。例如calendar.pipe.d。ts, date-format.pipe.d。t等等。
每一个都包含等效管道的Typescript函数名,例如,DateFormatPipe()是amDateFormatPipe的函数。
要在项目中使用DateFormatPipe,请在app.module.ts中将其导入并添加到全局提供程序中:
import { DateFormatPipe } from "angular2-moment";
.....
providers: [{provide: ErrorHandler, useClass: IonicErrorHandler}, ...., DateFormatPipe]
然后在任何你想要使用该函数的组件中,将它导入到顶部,注入到构造函数中并使用:
import { DateFormatPipe } from "angular2-moment";
....
constructor(......., public dfp: DateFormatPipe) {
let raw = new Date(2015, 1, 12);
this.formattedDate = dfp.transform(raw, 'D MMM YYYY');
}
要使用任何函数都遵循这个过程。如果有一种方法可以访问所有的函数,那就太好了,但上面的解决方案都不适合我。