angular - Webpack & TypeScript - Includere pluginuri Moment.js
Vreau să folosesc JDateFormatParser împreună cu Moment.js în aplicația mea Angular 4.
Am reușit să instalez și să folosesc cu succes Moment.js folosind:
npm install moment --save
Și adaugă-l în .ts folosind:
import * as moment from 'moment';
Pot să-l folosesc și să-l execut.
După aceea am instalat pluginul folosind:
npm install moment-jdateformatparser --save
Când am vrut atunci să-l folosesc în codul meu:
moment().toJDFString(moment.localeData().longDateFormat('L'))
IDE-ul meu s-a plâns deja:
TS2339: Proprietatea 'toJDFString' nu există pe tipul 'Moment'.
Aruncând o privire la acest răspuns, am încercat să o fac folosind conversia de tip:
(<any>moment()).toJDFString(moment.localeData().longDateFormat('L'))
Acest lucru a rezolvat eroarea din IDE, dar în timpul execuției consola îmi spune:
TypeError: WEBPACK_IMPORTED_MODULE_6_moment(...).toJDFString nu este o funcție
Are cineva un indiciu despre cum să-l folosească?
Răspuns #1
Trebuie să importați moment-jdateformatparser, deoarece acesta pur și simplu adaugă funcțiile sale la moment și exportă moment.
import * as moment from "moment-jdateformatparser";
Cât despre utilizarea mai multor pluginuri, se pare că nu există încă o soluție bună sau cel puțin eu nu am găsit o modalitate curată.
O opțiune este să imporți cele două pluginuri separat și să le denumești diferit astfel:
import * as momentJdate from "moment-jdateformatparser";
import * as momentTimezone from "moment-timezone";
Le poți îmbina mai târziu dacă vrei, astfel (folosind deepExtend):
let moment = {};
deepExtend(moment, momentJdate, momentTimezone);
//here you should be able to use moment().toJDFString() and moment.tz.names()
Niciuna dintre aceste opțiuni nu este curată în opinia mea, dar ambele ar trebui să funcționeze. De asemenea, nu am folosit niciodată mai mult de un plugin moment într-un singur fișier, așa că o soluție de genul acesta poate fi ok.
