איך להשתמש בספריית moment.js באפליקציית Angular 2 ב-Typescript?
ניסיתי להשתמש בזה עם חיבורי 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(), אני מקבל שגיאה. זה אמור להיות פשוט, מישהו יכול לספק קומבינציה של שורת פקודה/ייבוא שתעבוד?
תשובה #1
עדכון אפריל 2017:
מגרסה 2.13.0, Moment כולל קובץ הגדרת TypeScript. https://momentjs.com/docs/#/use-it/typescript/
פשוט התקן את זה עם npm, בתיבת הפקודה שלך הקלד
npm install --save moment
ואז באפליקציית Angular שלך, הייבוא הוא כל כך קל כך:
import * as moment from 'moment';
זהו, אתה מקבל תמיכה מלאה ב-Typescript!
עריכה בונוס: כדי להקליד משתנה או תכונה כ-Moment ב-TypeScript ניתן לעשות זאת לדוגמה כך:
let myMoment: moment.Moment = moment("someDate");
תשובה #2
moment הוא משאב גלובלי של צד שלישי. האובייקט 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');
}
רק תוודא להוסיף את תג הסקריפט ב-HTML שלך או ש-Moment לא יהיה קיים.
<script src="node_modules/moment/moment.js" />
טעינת מודול moment
ראשית תצטרך להגדיר טוען מודולים כמו System.js כדי לטעון את קבצי moment commonjs
System.config({
...
packages: {
moment: {
map: 'node_modules/moment/moment.js',
type: 'cjs',
defaultExtension: 'js'
}
}
});
לאחר מכן לייבא את moment לקובץ שבו יש צורך השתמש ב
import * as moment from 'moment';
או
import moment = require('moment');
עריכה :
יש גם אפשרויות עם כמה כלי חבילה כמו Webpack או SystemJS builder או Browserify שישאירו את moment מחוץ לאובייקט window. למידע נוסף על אלה, נא לבקר באתרי האינטרנט שלהם להנחיות.
תשובה #3
הבא עבד עבורי.
ראשית, התקן את ההגדרות של סוגים עבור moment.
typings install moment --save(הערה: לא --ambient)
לאחר מכן, כדי להתגבר על החוסר ביצוא מתאים:
import * as moment from 'moment';
תשובה #4
הייתי בוחר במשהו מהבאים:
npm install moment --saveלמערך map בקובץ systemjs.config.js שלך הוסף:
'moment': 'node_modules/moment'להוסיף למערך packages:
'moment': { defaultExtension: 'js' }בקובץ component.ts שלך השתמש ב: import * as moment from 'moment/moment';
וזהו. אתה יכול להשתמש מכיתת הרכיב שלך:
today: string = moment().format('D MMM YYYY');תשובה #5
אנחנו משתמשים במודולים עכשיו,
נסה import {MomentModule} from 'angular2-moment/moment.module';
לאחר npm install angular2-moment
http://ngmodules.org/modules/angular2-moment
תשובה #6
כדי להשתמש בזה בפרויקט Typescript תצטרך להתקין את moment:
npm install moment --saveלאחר התקנת moment, ניתן להשתמש בו בכל קובץ .ts לאחר ייבואו:
import * as moment from "moment";תשובה #7
1: התקן את moment באמצעות הפקודה npm install moment --save
2: אל תוסיף שום דבר ב-app.module.ts
3: פשוט הוסף משפט ייבוא בחלק העליון של ה-component שלך או בכל קובץ אחר כך: import * as moment from 'moment';
4: עכשיו אתה יכול להשתמש ב-moment בכל מקום בקוד שלך. בדיוק כמו:
myDate = moment(someDate).format('MM/DD/YYYY HH:mm');תשובה #8
--- עדכון 11/01/2017
Typings עכשיו מיושן והוא הוחלף על ידי npm @types. מעכשיו קבלת הצהרות סוגים לא תחייב כלים מלבד npm. כדי להשתמש ב-Moment לא תצטרך להתקין את הגדרות הסוגים דרך @types כי ל-Moment כבר יש את הגדרות הסוגים שלו.
אז, זה מצטמצם ל-3 שלבים בלבד:
1 - התקן את moment שכולל את הגדרות הסוג:
npm install moment --save
2 - הוסף את תגית הסקריפט בקובץ ה-HTML שלך:
<script src="node_modules/moment/moment.js" />
3 - עכשיו אתה פשוט יכול להשתמש בזה. נקודה.
today: string = moment().format('D MMM YYYY');
--- תשובה מקורית
זה ניתן לעשות בשלושה שלבים בלבד:
1 - התקן את הגדרת moment - קובץ *.d.ts:
typings install --save --global dt~moment dt~moment-node
2 - הוסף את תגית הסקריפט בקובץ ה-HTML שלך:
<script src="node_modules/moment/moment.js" />
3 - עכשיו אתה פשוט יכול להשתמש בזה. נקודה.
today: string = moment().format('D MMM YYYY');
