कोणीय 2 टाइपस्क्रिप्ट ऐप में क्षण.जेएस लाइब्रेरी का उपयोग कैसे करें?


231

मैंने इसे टाइपस्क्रिप्ट बाइंडिंग के साथ उपयोग करने की कोशिश की:

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
कृपया अपनी त्रुटि साझा करें
०३:०६

1
यदि मैं moment.d.ts इंस्टॉल करता हूं और आयात का उपयोग करता हूं, तो मुझे संकलन त्रुटि ERROR ... / टाइपिंग / ब्राउज़र / परिवेश / क्षण / क्षण.dts (9,21): त्रुटि TS2503: नामस्थान 'क्षण' नहीं मिल सकता है । और अगर मैं टंकण स्थापित नहीं करता और उपयोग की आवश्यकता होती है, तो मुझे बिना शर्त टाइप टाइप मिलता है: moment.format एक फ़ंक्शन नहीं है
सर्गेई Aldoukhov

यहाँ बहुत पुराने उत्तर हैं। कृपया यहाँ देखें: github.com/angular/angular-cli/wiki/…
Didia

3
हिन्रिच के जवाब (जून 2017) के रूप में NG4 साथ मेरे लिए काम किया stackoverflow.com/a/43257938/1554495
टेंडरलॉइन

सर्जेअल्डौखोव यह अभी भी सबसे अच्छा जवाब है? निश्चित रूप से @ हेनरिक है?
जेंसन-बटन-इवेंट

जवाबों:


513

अप्रैल 2017 अपडेट करें:

2.13.0 संस्करण के रूप में, मोमेंट में एक टाइपस्क्रिप्ट परिभाषा फ़ाइल शामिल है। https://momentjs.com/docs/#/use-it/typescript/

बस इसे एनपीएम के साथ अपने कंसोल प्रकार में स्थापित करें

npm install --save moment

और फिर अपने कोणीय ऐप में, आयात करना जितना आसान है:

import * as moment from 'moment';

यही है, आपको पूर्ण टाइपस्क्रिप्ट समर्थन मिलता है!

बोनस संपादित करें:Moment टाइपस्क्रिप्ट में वैरिएबल या प्रॉपर्टी टाइप करने के लिए आप यह कर सकते हैं जैसे:

let myMoment: moment.Moment = moment("someDate");

1
क्या इसे अपनी app.module फ़ाइल और आयात सरणी में जोड़ना महत्वपूर्ण है? या आप बस इसे एक घटक के भीतर आयात कर सकते हैं और इसका उपयोग कर सकते हैं?
कैथरीन आर

3
@ कैथरीन आर आप इसे किसी भी फ़ाइल में उपयोग कर सकते हैं, यह कोणीय विशिष्ट नहीं है।
हेनरिक

अब, पल प्लग के बारे में क्या, जैसे पल-राउंड?
ग्रेव

2
वास्तव में यह उत्तर कोणीय विशिष्ट नहीं है, यह किसी भी टाइपस्क्रिप्ट प्रोजेक्ट पर लागू होता है।
हिनरिच

महान, और मैं टेम्पलेट पर पाइप का उपयोग कैसे करूं?
vladanPro

98

momentएक तीसरा पक्ष वैश्विक संसाधन है। पल ऑब्जेक्ट windowब्राउज़र में रहता है। इसके लिए importयह आपके कोणीय 2 अनुप्रयोग में सही नहीं है । इसके बजाय <script>अपने html में टैग को शामिल करें जो पल को लोड करेगा। js फ़ाइल।

टाइपस्क्रिप्ट को खुश करने के लिए आप जोड़ सकते हैं

declare var moment: any;

आपकी फ़ाइलों के शीर्ष पर जहां आप इसका उपयोग संकलन त्रुटियों को रोकने के लिए करते हैं, या आप उपयोग कर सकते हैं

///<reference path="./path/to/moment.d.ts" />

या टाइप करने के लिए tsd का उपयोग करें ..d.ts फ़ाइल जो टाइपस्क्रिप्ट को अपने आप मिल सकती है।

उदाहरण

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 में स्क्रिप्ट टैग जोड़ना सुनिश्चित करें या पल मौजूद नहीं होगा।

<script src="node_modules/moment/moment.js" />

मॉड्यूल लोड हो रहा है moment

सबसे पहले आपको एक मॉड्यूल लोडर को सेट करने की आवश्यकता होगी जैसे कि System.js पल भर की आम फाइलें लोड करने के लिए

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 बिल्डर या Browserify के साथ विकल्प भी हैं जो विंडो ऑब्जेक्ट से दूर रहेंगे। इन पर अधिक जानकारी के लिए, कृपया निर्देश के लिए उनकी संबंधित वेबसाइटों पर जाएँ।


3
यह संभव है, लेकिन यह बहुत लंबा है क्योंकि आपको एक मॉड्यूल लोडर रखने की आवश्यकता होगी जैसे कि Systemक्षण के कॉमनर्ज नोड संस्करण में लोड और फिर आप इसे संदर्भित कर पाएंगे import * as moment from 'moment';या import moment = require('moment');जो सभी इरादों और उद्देश्यों के लिए समान हैं, लेकिन है टाइपस्क्रिप्ट में कुछ सूक्ष्म अंतर।
SnareChops

@SnareChops परिभाषा फ़ाइल को नीचे typings install moment --ambient -- saveनहीं typingsखींचती है और इसका संदर्भ बनाती है ///<reference path="./path/to/moment.d.ts" />? मुझे रनिंग करते समय एक ही त्रुटि हो रही हैnpm run tsc
Shann Northrop

यह भ्रामक है; importआईएनजी पल के साथ कुछ भी गलत नहीं है ।
स्ट्रगलर

2
यह उत्तर अधूरा है क्योंकि आपको क्षण परिभाषा का प्रबंधन करने के लिए टाइपिंग का उपयोग करना होगा। इसके अलावा, इसे कुछ भी आयात करने की आवश्यकता नहीं है। कृपया, मेरे उत्तर को देखें ।
बर्नार्डो पचेको

8
यह उत्तर भ्रामक है, तथ्य यह है कि पल एक वैश्विक चर है इसका मतलब यह नहीं है कि आपके पास इसे स्क्रिप्ट टैग के रूप में लोड करने के लिए "है"। यदि आप किसी प्रकार के बंडलर (वेबपैक) का उपयोग कर रहे हैं, तो आप उसे विक्रेता फाइल में बंडल कर सकते हैं। यदि आप वेबपैक और उचित लोडर का उपयोग करते हैं, तो आप वैश्विक असाइनमेंट को भी हल कर सकते हैं।
श्लोमी असफ

49

निम्नलिखित ने मेरे लिए काम किया।

सबसे पहले, टाइप परिभाषाएँ पल के लिए स्थापित करें।

typings install moment --save

(नोट: नहीं --ambient)

फिर, एक उचित निर्यात की कमी के आसपास काम करने के लिए:

import * as moment from 'moment';

2
मुझे import moment from "moment";यह काम करने के बजाय करना था ।
आथरिक्स

3
यह उत्तर अपूर्ण है क्योंकि आपको कुछ भी आयात करने की आवश्यकता नहीं है। कृपया, मेरे उत्तर को देखें ।
बर्नार्डो पचेको

1
इसके अलावा आयनिक 2 बीटा / कोणीय 2 आरसी के प्रत्येक पुनरावृत्ति चीजों को आयात करने का एक नया तरीका लाने के लिए लग रहा था ताकि आपको इन सुझावों में से कुछ को आजमाना पड़े, भले ही एक बिंदु पर वे एक बार जवाब देने के लिए सबसे ऊपर थे
डिस्कोडेन

import * as moment from 'moment';क्या चाबी है।
निमा

मैं रजिस्ट्री में "क्षण" ("npm") खोजने में असमर्थ हूं। जब मैं परिभाषाएँ स्थापित करने की कोशिश करता हूँ, तो कृपया मदद करें
सेबेस्टियन रोज़ास

28

मैं निम्नलिखित के साथ जाना होगा:

npm install moment --save

अपनी systemjs.config.jsफ़ाइल के mapसरणी में जोड़ें:

'moment': 'node_modules/moment'

करने के लिए packagesसरणी जोड़ने:

'moment': { defaultExtension: 'js' }

अपने कंपोनेंट में उपयोग करें: import * as moment from 'moment/moment';

और बस। आप अपने घटक की कक्षा से उपयोग कर सकते हैं:

today: string = moment().format('D MMM YYYY');


25

हम अब मॉड्यूल का उपयोग कर रहे हैं,

प्रयत्न import {MomentModule} from 'angular2-moment/moment.module';

उपरांत npm install angular2-moment

http://ngmodules.org/modules/angular2-moment


76
यह अपर्याप्त है, क्योंकि यह केवल पाइप स्थापित करता है। जाहिर है, आप इस तरह से अपने मॉड्यूल में क्षणों की तारीखों के साथ काम नहीं कर सकते।
ntaso

1
घटक कक्षा में कोणीय 2-क्षण फिल्टर का उपयोग करने के तरीके के बारे में कुछ सुझाव पसंद करेंगे
ट्रिकपट्टी

3
यह होना चाहिए: 'angular2-moment / moment.module' से {MomentModule} आयात करें;
यासिर

1
यह चुना हुआ जवाब नहीं होना चाहिए। @Hinrich के जवाब पर एक नज़र डालें। npm install moment --save, npm install @types/moment --save stackoverflow.com/questions/35166168/…
jamesjansson

एक आवरण स्थापित करने के बजाय यह होना चाहिएimport * as moment from 'moment';
एम। आतिफ रियाज़

22

किसी Typescriptप्रोजेक्ट में इसका उपयोग करने के लिए आपको पल-पल इंस्टॉल करना होगा:

npm install moment --save

पल-पल स्थापित करने के बाद, आप इसे .tsआयात करने के बाद किसी भी फ़ाइल में उपयोग कर सकते हैं :

import * as moment from "moment";


1
नोट ** @ प्रकार / पल @ 2.13.0: यह मोमेंट ( github.com/moment/moment ) के लिए एक स्टब प्रकार की परिभाषा है । पल अपनी स्वयं की परिभाषा प्रदान करता है, इसलिए आपको @ प्रकार / क्षण स्थापित करने की आवश्यकता नहीं है!
विनीमुक्का

1
महान! यहाँ आधिकारिक संदर्भ: momentjs.com/docs/#/use-it/typescript
Andrea

14

--- अपडेट 11/01/2017

टंकण अब हटा दिया गया है और इसे npm @types द्वारा बदल दिया गया था । अब से प्रकार की घोषणाएं करने के लिए npm के अलावा कोई टूल की आवश्यकता नहीं होगी। मोमेंट का उपयोग करने के लिए आपको @ परिभाषाओं के माध्यम से टाइप परिभाषाएँ स्थापित करने की आवश्यकता नहीं होगी क्योंकि मोमेंट पहले से ही अपनी स्वयं की परिभाषाएँ प्रदान करता है।

तो, यह केवल 3 चरणों में घट जाता है:

1 - उस क्षण को स्थापित करें जिसमें प्रकार परिभाषाएं शामिल हैं:

npm install moment --save

2 - अपनी HTML फ़ाइल में स्क्रिप्ट टैग जोड़ें:

<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 src="node_modules/moment/moment.js" />

3 - अब आप बस इसका उपयोग कर सकते हैं। अवधि।

today: string = moment().format('D MMM YYYY');

मुझे dt पर उपलब्ध टाइपिंग संस्करण से परेशानी हो रही है। यह उस पुराने संस्करण का उपयोग कर रहा है जिसमें मेरे द्वारा उपयोग की जाने वाली नई विधियाँ नहीं हैं। अगर मैं उनके द्वारा सुझाए गए क्षणों ( संवेगों के अनुसार /docs/#/use-it/system-js ) एप्लिकेशन को संकलित करता हूं , लेकिन ब्राउज़र में लोड नहीं होता है। मैं लगभग एक मृत अंत तक पहुँच रहा हूँ ...
फैब्रिकियो

मुझे कोणीय क्ली के साथ काम करने के लिए स्क्रिप्ट टैग नहीं मिला। आयात करने की तुलना में अधिक समझ में आता है
विन्नमुक्का

@ बर्नार्डो मैंने आपके कदमों पर चलने की कोशिश की और क्षणों को स्थापित किया। जे.एस. बाद declare var moment;हालांकि, typings मेरे लिए काम नहीं कर रहा है। moment().नो इंटैलिजेंस टाइप करने के बाद । मुझे लगता है कि मुझे यहां कुछ कदम याद आ रहे हैं।
श्यामल परीख

बहुत यकीन है कि यह काम नहीं करता है, वेब पैक बिल्ड नोड मॉड्यूल में इसे शामिल करने के लिए कैसे जानता है?
जॉनी 5

12

के लिए कोणीय 7+ (समर्थन 8 और 9 भी) :

1: कमांड द्वारा क्षण स्थापित करें 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');


मुझे इस तरह से आयात करना था: import * as moment_ from 'moment'; const moment = moment_;अन्यथा मुझे मिल रहा थाError: Cannot call a namespace ('moment')
स्नुक

सुनने में बहुत अजीब है। moment_सिर्फ एक शाब्दिक नाम है। यह कुछ भी हो सकता है, मुझे लगता है ...
रहमत अली

1
बस इस बात से अवगत import * as moment from 'moment';रहें कि बंडल का आकार ~ 500kb बढ़ा दें। वहाँ एक अच्छा लेख एक समाधान के साथ समस्या को समझाने है medium.jonasbandi.net/...
Kosmonaft

9

एनजी सीएलआई के साथ

> npm install moment --save

app.module में

import * as moment from 'moment';

providers: [{ provide: 'moment', useValue: moment }]

घटक में

constructor(@Inject('moment') private moment)

इस तरह से आप एक बार आयात करते हैं

अद्यतन कोणीय => ५

{
   provide: 'moment', useFactory: (): any => moment
}

मेरे लिए एओटी के साथ उत्पादों में और सार्वभौमिक के साथ काम करता है

मैं किसी भी का उपयोग कर की तरह है, लेकिन क्षण का उपयोग करना पसंद नहीं है। मुझे मिला

Error   Typescript  Type 'typeof moment' is not assignable to type 'Moment'. Property 'format' is missing in type 'typeof moment'.

मुझे Parameter 'moment' implicitly has an 'any' typeत्रुटि मिलती है।
अज़िमुथ

क्या यह आपके लिए ठेस मोड में काम करता है? यह देव मोड में ठीक काम कर रहा था, लेकिन जब मैं अपने ऐप को प्रोडक्ट मोड में चलाता हूं तो यह विफल हो जाता है। मेरे ऐप में आलसी लोडेड मॉड्यूल भी हैं (बस मामले में जो मायने रखता है)। पल शून्य हो रहा है।
jbgarr

@jbgarr मैंने कंस्ट्रक्टर (@Inject ('क्षण') निजी क्षण) {कंसोल.लॉग ('तारीख', पल ()) जैसे आलसी मॉड्यूल में कोशिश की है; } बिना किसी समस्या के
Whisher

8

कोणीय 2-पल लाइब्रेरी में {{myDate | । html फ़ाइलों में उपयोग करने के लिए amTimeAgo}}।

उन्हीं पाइपों को एक घटक वर्ग (.ts) फ़ाइल के भीतर टाइपस्क्रिप्ट फ़ंक्शन के रूप में भी एक्सेस किया जा सकता है। पहले निर्देशानुसार पुस्तकालय स्थापित करें:

npm install --save angular2-moment

नोड_मॉड्यूल्स / कोणीय 2-पल में अब "। Pipe.d.ts" कैलेंडर की तरह फाइलें होंगी। pipe.d.ts , date-format.pipe.d.ts और कई और।

उनमें से प्रत्येक में समान पाइप के लिए टाइपस्क्रिप्ट फ़ंक्शन नाम है, उदाहरण के लिए, 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');
}

किसी भी फ़ंक्शन का उपयोग करने के लिए इस प्रक्रिया का पालन करें। यह अच्छा होगा यदि सभी कार्यों तक पहुंच प्राप्त करने का एक तरीका है, लेकिन उपरोक्त समाधानों में से कोई भी मेरे लिए काम नहीं करता है।


यह बहुत बढ़िया धन्यवाद! कोणीय 2 पल के लिए हर जगह आपको केवल टेम्पलेट पर इसका उपयोग करने का तरीका दिखाता है। आपकी बहुत ही उपयोगी पोस्ट ने मुझे दिखाया कि मैं इसे टेम्पलेट में आउटपुट करने से पहले मूल्य में हेरफेर करने के लिए इसका उपयोग कैसे कर सकता हूं।
एंड्रयू जूनियर हावर्ड

@royappa मैं पाइप्स मॉड्यूल का उपयोग करते हुए कुछ देखता हूं और कुछ इसे टाइपस्क्रिप्ट में एक्सेस करने के लिए बस पल का उपयोग कर रहा हूं। मैं समझता हूं कि आप टाइपस्क्रिप्ट में पाइप्स संस्करण का उपयोग कर सकते हैं लेकिन दोनों को स्थापित करने में क्या नुकसान होगा?
जैक्स

5

यदि आप अधिक तृतीय-पक्ष पैकेज जोड़ रहे हैं, तो मैंने कोणीय 2-पल लायब्रेरी का उपयोग किया है । स्थापना बहुत सीधी थी, और आपको README के ​​नवीनतम निर्देशों का पालन करना चाहिए। मैंने इसके परिणामस्वरूप टाइपिंग भी स्थापित की।

मेरे लिए एक आकर्षण की तरह काम किया, और इसे काम करने के लिए बमुश्किल कोई कोड जोड़ा।


5

सुनिश्चित नहीं है कि यह अभी भी लोगों के लिए एक मुद्दा है, हालांकि ... लाइब्रेरी के रूप में SystemJS और MomentJS का उपयोग करना, इसने मेरे लिए इसे हल कर दिया

/*
 * Import Custom Components
 */
import * as moment from 'moment/moment'; // please use path to moment.js file, extension is set in system.config

// under systemjs, moment is actually exported as the default export, so we account for that
const momentConstructor: (value?: any) => moment.Moment = (<any>moment).default || moment;

मेरे लिए वहाँ से ठीक काम करता है।


5

कोणीय 2 RC5 के लिए यह मेरे लिए काम किया ...

पहले npm के माध्यम से पल स्थापित करें

npm install moment --save

फिर उस घटक में पल आयात करें जिसे आप इसका उपयोग करना चाहते हैं

import * as moment from 'moment';

अंत में systemjs.config.js "मैप" और "पैकेज" में पल को कॉन्फ़िगर करें

// 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'}
  };

वेबपैक के समतुल्य कदम के बारे में कोई विचार?
Bharat Geleda

@BharatGeleda वेबपैक के साथ कुछ भी करने की आवश्यकता नहीं है। Angular2 और कोणीय-cli का उपयोग करते हुए मुझे बस npm को स्थापित और आयात करना था। मैं किसी भी टाइपिंग की जरूरत नहीं है क्योंकि पल के अंतिम संस्करण टाइपस्क्रिप्ट का समर्थन करता है।
स्टैनिस्लासड्रग मोनिका

1
एकमात्र समाधान जिसने मुझे एक और लोकेल आयात किया: import 'moment/locale/de.js';धन्यवाद!
इफ

4

SnareChop के जवाब के अलावा, मुझे क्षणिकाओं के लिए टाइपिंग फ़ाइल को बदलना पड़ा।

में moment-node.d.tsमैंने प्रतिस्थापित किया:

export = moment;

साथ में

export default moment;


4

कोणीय में पल का उपयोग करने का मेरा अपना संस्करण

npm i moment --save

import * as _moment from 'moment';

...

moment: _moment.Moment = _moment();

constructor() { }

ngOnInit() {

    const unix = this.moment.format('X');
    console.log(unix);    

}

पहले आयात के रूप में पल _moment, फिर एक प्रारंभिक मूल्य के momentसाथ प्रकार के _moment.Momentसाथ चर घोषित _moment()

पल का आयात अभ्यस्त आप किसी भी ऑटो पूरा करने दे, लेकिन अगर आप पैकेज Momentसे _momentनाम स्थान से टाइप इंटरफेस के साथ पल घोषित करेंगे नाम 'moment'क्षण के साथ प्रारंभ_moment() आपको पल के एपि के ऑटो समापन पूरा करता है।

मुझे लगता है कि यह का उपयोग कर @types typingsया कोणीय प्रदाताओं के बिना पल का उपयोग करने का सबसे कोणीय तरीका है , अगर आप वैनिला जावास्क्रिप्ट पुस्तकालयों जैसे पल के लिए ऑटो पूरा कर रहे हैं।


प्रकारों को स्थापित करने से आप स्वत: पूर्ण का उपयोग कर npm install @types/moment --save
सकेंगे

3

अपने को जोड़ने "allowSyntheticDefaultImports": trueका प्रयास करें tsconfig.json

झंडा क्या करता है?

यह मूल रूप से टाइपस्क्रिप्ट कंपाइलर को बताता है कि ES6 आयात स्टेटमेंट का उपयोग करना ठीक है, अर्थात

import * as moment from 'moment/moment';

Moment.js जैसे एक CommonJS मॉड्यूल पर जो एक डिफ़ॉल्ट निर्यात की घोषणा नहीं करता है। ध्वज केवल प्रकार की जाँच को प्रभावित करता है, उत्पन्न कोड को नहीं।

यदि आप अपने मॉड्यूल लोडर के रूप में SystemJS का उपयोग करते हैं तो यह आवश्यक है। यदि आप अपने TS संकलक को बताते हैं कि आप SystemJS का उपयोग करते हैं तो झंडा अपने आप चालू हो जाएगा:

"module": "system"

यह आईडीई द्वारा फेंकी गई किसी भी त्रुटि को भी हटा देगा यदि वे उपयोग करने के लिए कॉन्फ़िगर किए गए हैं tsconfig.json


2

Systemjs और jspm के साथ कोणीय 2 के लिए:

import * as moment_ from 'moment';
export const moment =  moment_["default"];

var a = moment.now();
var b = moment().format('dddd');
var c = moment().startOf('day').fromNow();

2

ANGULAR CLI उपयोगकर्ताओं के लिए

बाहरी पुस्तकालयों का उपयोग यहां प्रलेखन में है:

https://github.com/angular/angular-cli/wiki/stories-third-party-lib

बस के माध्यम से अपने पुस्तकालय स्थापित करें

npm स्थापित करें lib-name --save

और इसे अपने कोड में आयात करें। यदि लाइब्रेरी में टाइपिंग शामिल नहीं है, तो आप इनका उपयोग करके स्थापित कर सकते हैं:

npm स्थापित करें lib-name --save

npm @ प्रकार / lib-name --save-dev स्थापित करें

फिर src / tsconfig.app.json खोलें और इसे प्रकार सरणी में जोड़ें:

"प्रकार": ["लिब-नाम"]

यदि आपके द्वारा टाइप की गई लाइब्रेरी को केवल आपके e2e परीक्षणों पर उपयोग किया जाना है, इसके बजाय e2e / tsconfig.e2e.json का उपयोग करें। वही इकाई परीक्षणों और src / tsconfig.spec.json के लिए जाता है।

यदि लाइब्रेरी में @ प्रकारों पर टाइपिंग उपलब्ध नहीं है, तो भी आप इसके लिए मैन्युअली टाइपिंग जोड़कर इसका उपयोग कर सकते हैं:

सबसे पहले, अपने src / folder में एक typeings.d.ts फ़ाइल बनाएं।

यह फ़ाइल स्वचालित रूप से वैश्विक प्रकार की परिभाषा के रूप में शामिल की जाएगी। फिर, src / typings.d.ts में, निम्न कोड जोड़ें:

घोषित मॉड्यूल 'टाइपलेस-पैकेज';

अंत में, लाइब्रेरी का उपयोग करने वाले घटक या फ़ाइल में, निम्न कोड जोड़ें:

आयात * 'टाइपलेस-पैकेज' से टाइपलेसपैकेज के रूप में; typelessPackage.method ();

किया हुआ। नोट: आपको उस लाइब्रेरी के लिए अधिक टाइपिंग को परिभाषित करने की आवश्यकता हो सकती है या उपयोगी हो सकती है जिसे आप उपयोग करने की कोशिश कर रहे हैं।


यदि आपको चरण-दर-चरण निर्देशों की आवश्यकता है, तो इस लेख को चेकआउट करें। medium.com/@jek.bao.choo/…
wag0325

1

मैंने सिस्टम का उपयोग करते हुए allowSyntheticDefaultImports (क्योंकि मेरे लिए उपयोग करने के लिए समय से कोई निर्यात नहीं है) की अनुमति देने के लिए सलाह का पालन किया। तब मैंने किसी की सलाह का पालन किया:

import moment from 'moment';

मेरे system.js कॉन्फिग में पल-पल मैप किए जाने के साथ। अन्य आयात विवरण मेरे लिए किसी कारण से काम नहीं करेंगे


यह अभी अंतिम उत्तर है, लेकिन केवल एक ही काम कर रहा है!
TJL

1

निम्नलिखित ने मेरे लिए काम किया:

typings install dt~moment-node --save --global

टाइपिंग रिपॉजिटरी में क्षण-नोड मौजूद नहीं है। आपको उपसर्ग dt का उपयोग करके इसे काम करने के लिए निश्चित रूप से टाइप करने के लिए पुनर्निर्देशित करना होगा।


1

Systemjs के साथ मैंने जो किया है, अपने systemjs.config के अंदर मैंने इसके लिए नक्शा जोड़ा है moment

map: {
   .....,
   'moment': 'node_modules/moment/moment.js',
   .....
}

और फिर आप momentबस करके आसानी से आयात कर सकते हैं

import * as moment from 'moment'

1

मुझे पता है कि यह एक पुराना धागा है, लेकिन मेरे लिए सबसे सरल समाधान जो वास्तव में काम करता था:

  1. पहले इसे स्थापित करना npm install moment --save
  2. मेरे घटकों में नोड_मॉड्यूल्स से इसकी आवश्यकता होती है और इसका उपयोग करते हैं:
const moment = require('../../../node_modules/moment/moment.js');

@Component({...})
export class MyComponent {
   ...
   ngOnInit() {
       this.now = moment().format();
   }
   ...
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.