Angular 如何在TypeScript中使用momentjs
我有一个项目,我想使用Angular 如何在TypeScript中使用momentjs,angular,typescript,momentjs,Angular,Typescript,Momentjs,我有一个项目,我想使用momentjsversion2.20.1 我接着介绍了如何安装TypeScript,在大多数情况下,一切都正常工作。当我使用ng test测试我的库时,我没有问题,但是当我尝试用npm run build打包库时,我得到了 无法调用命名空间('时刻') 使用import*作为“矩”的矩时。我得到 矩没有默认的导出 使用从“力矩”导入力矩时和设置“allowSyntheticDefaultImports”:true 如何正确安装和使用momentjs?试试 import *
momentjs
version2.20.1
我接着介绍了如何安装TypeScript,在大多数情况下,一切都正常工作。当我使用ng test
测试我的库时,我没有问题,但是当我尝试用npm run build
打包库时,我得到了
无法调用命名空间('时刻')
使用import*作为“矩”的矩时代码>。我得到
矩没有默认的导出
使用从“力矩”导入力矩时代码>和设置“allowSyntheticDefaultImports”:true
如何正确安装和使用momentjs
?试试
import * as moment_ from 'moment';
const moment = moment_;
如果要使用公共变换管道方法,请参见:
import { DateFormatPipe } from "angular2-moment";
constructor(public dfp: DateFormatPipe) { }
var date = this.dfp.transform(value, 'DD/MM/YYYY');
我通过导入时刻解决了这个问题(感谢@adejones)
这导致了成功的构建。但我犯了个错误
力矩不是一个函数
从其他Angular 5应用程序使用我的库时。我通过添加
"lib": {
"externals": {
"moment": "moment"
}
}
到我的Angular 5库中的ng package.json
,并添加了
"dependencies": {
"moment": "2.20.1"
}
到我的Angular 5应用程序的package.json
。
正如felix在这里提到的-用于打字脚本
import moment from 'moment/src/moment';
您可以将momentjs
添加到您的包中。json
依赖项:
"dependencies": {
...
"moment": "2.20.1",
...
}
然后可以按如下方式使用力矩:
import * as moment from "moment";
export class DateThingy {
public getDate(): moment.Moment {
return moment();
}
}
额外导入
或者你甚至可以为打字做额外的导入
import { Moment } from 'moment'; // Import the moment typings
import * as moment from 'moment'; // Import the moment functions (and typings)
然后您可以将其用作:
export class DateThingy {
public getDate(): Moment {
return moment();
}
}
这在npm安装@types/moment中也有解释--save@Nour运行该命令时,它说Moment提供了自己的类型定义,所以您不需要安装@types/Moment代码>。不是这样的。您可以按照文档中的说明安装momente.js并将链接添加到.angular-cli.json中,但在组件中使用之前,您必须声明它。例如,声明:任何;奇怪的是,这起作用了,谢谢如果有更好的解决方案,我会等一等。
export class DateThingy {
public getDate(): Moment {
return moment();
}
}