Saya mencoba menggunakannya dengan binding naskah:
npm install moment --save
typings install moment --ambient -- save
test.ts:
import {moment} from 'moment/moment';
Dan tanpa:
npm install moment --save
test.ts:
var moment = require('moment/moment');
Tetapi ketika saya memanggil moment.format (), saya mendapatkan kesalahan. Harus sederhana, adakah yang bisa memberikan baris perintah / kombinasi impor yang akan berfungsi?
typescript
angular
Sergey Aldoukhov
sumber
sumber
Jawaban:
Pembaruan April 2017:
Pada versi 2.13.0, Moment menyertakan file definisi naskah. https://momentjs.com/docs/#/use-it/typescript/
Cukup instal dengan npm, dalam jenis konsol Anda
Dan kemudian di aplikasi Angular Anda, impor semudah ini:
Itu saja, Anda mendapatkan dukungan penuh Script!
Suntingan bonus: Untuk mengetikkan variabel atau properti seperti
Moment
dalam Skrip Anda dapat melakukan ini misalnya:sumber
moment
adalah sumber daya global pihak ketiga. Objek saat ini hidupwindow
di browser. Karenanya itu tidak benar untukimport
itu dalam aplikasi angular2 Anda. Alih-alih, sertakan<script>
tag dalam html Anda yang akan memuat file moment.js.Untuk membuat TypeScript senang, Anda dapat menambahkan
di bagian atas file Anda di mana Anda menggunakannya untuk menghentikan kesalahan kompilasi, atau Anda dapat menggunakannya
atau gunakan tsd untuk menginstal file moment.d.ts yang mungkin ditemukan TypeScript pada file itu sendiri.
Contoh
Pastikan untuk menambahkan tag skrip di html Anda atau momen tidak akan ada.
Memuat modul
moment
Pertama, Anda perlu mengatur pemuat modul seperti System.js untuk memuat file commonjs saat
Kemudian untuk mengimpor momen ke file di mana perlu digunakan
atau
EDIT:
Ada juga opsi dengan beberapa bundler seperti Webpack atau SystemJS builder atau Browserify yang akan menjaga momen dari objek window. Untuk informasi lebih lanjut tentang ini, silakan kunjungi situs web masing-masing untuk instruksi.
sumber
System
memuat dalam versi commonjs node saat dan kemudian Anda akan dapat referensi denganimport * as moment from 'moment';
atauimport moment = require('moment');
yang untuk semua maksud dan tujuan identik, tetapi harus memiliki beberapa perbedaan kecil dalam naskah.typings install moment --ambient -- save
tidaktypings
membuka file definisi dan membuat referensi///<reference path="./path/to/moment.d.ts" />
? Saya mengalami kesalahan yang sama saat menjalankannpm run tsc
import
momen.Berikut ini bekerja untuk saya.
Pertama, instal definisi tipe untuk saat ini.
typings install moment --save
(Catatan: BUKAN
--ambient
)Kemudian, untuk mengatasi kekurangan ekspor yang tepat:
sumber
import moment from "moment";
untuk membuatnya bekerja.import * as moment from 'moment';
adalah kuncinya.Saya akan mengikuti:
npm install moment --save
Ke array
systemjs.config.js
file Anda ,map
tambahkan:'moment': 'node_modules/moment'
untuk
packages
menambahkan array:'moment': { defaultExtension: 'js' }
Di component.ts Anda gunakan:
import * as moment from 'moment/moment';
dan hanya itu. Anda dapat menggunakan dari kelas komponen Anda:
today: string = moment().format('D MMM YYYY');
sumber
Kami menggunakan modul sekarang,
mencoba
import {MomentModule} from 'angular2-moment/moment.module';
setelah
npm install angular2-moment
http://ngmodules.org/modules/angular2-moment
sumber
npm install moment --save
,npm install @types/moment --save
stackoverflow.com/questions/35166168/…import * as moment from 'moment';
Untuk menggunakannya dalam suatu
Typescript
proyek, Anda perlu menginstal momen:npm install moment --save
Setelah menginstal momen, Anda dapat menggunakannya dalam
.ts
file apa pun setelah mengimpornya:import * as moment from "moment";
sumber
--- Perbarui 11/01/2017
Pengetikan sekarang tidak digunakan lagi dan diganti dengan npm @types . Mulai sekarang untuk mendapatkan deklarasi tipe tidak memerlukan alat selain npm. Untuk menggunakan Moment, Anda tidak perlu menginstal definisi tipe melalui @types karena Moment sudah memberikan definisi tipe sendiri.
Jadi, itu berkurang menjadi hanya 3 langkah:
1 - Pasang momen yang mencakup definisi jenis:
2 - Tambahkan tag skrip di file HTML Anda:
3 - Sekarang Anda bisa menggunakannya. Titik.
--- Jawaban asli
Ini dapat dilakukan hanya dalam 3 langkah:
1 - Instal definisi momen - * .d.ts file:
2 - Tambahkan tag skrip di file HTML Anda:
3 - Sekarang Anda bisa menggunakannya. Titik.
sumber
declare var moment;
Namun, pengetikan tidak berfungsi untuk saya. Setelah mengetikmoment().
tidak ada intellisense. Saya kira saya kehilangan beberapa langkah di sini.Untuk Angular 7+ (Mendukung 8 dan 9 juga) :
1: Instal momen dengan perintah
npm install moment --save
2: Jangan menambahkan apa pun di
app.module.ts
3: Cukup tambahkan pernyataan impor di atas
component
file Anda atau lainnya seperti ini:import * as moment from 'moment';
4: Sekarang Anda dapat menggunakan
moment
di mana saja dalam kode Anda. Seperti:myDate = moment(someDate).format('MM/DD/YYYY HH:mm');
sumber
import * as moment_ from 'moment'; const moment = moment_;
Kalau tidak, saya akan mendapatkanError: Cannot call a namespace ('moment')
moment_
hanyalah nama literal. Itu bisa apa saja, saya pikir ...import * as moment from 'moment';
meningkatkan ukuran bundel hingga ~ 500kb. Ada artikel bagus yang menjelaskan masalah dengan solusi medium.jonasbandi.net/...dengan ng CLI
di app.module
dalam komponen
dengan cara ini Anda mengimpor momen sekali
UPDATE Angular => 5
Bagi saya bekerja di prod dengan aot dan juga dengan universal
Saya tidak suka menggunakan apa pun selain menggunakan momen
sumber
Parameter 'moment' implicitly has an 'any' type
kesalahan.Perpustakaan angular2-saat memiliki pipa seperti {{myDate | amTimeAgo}} untuk digunakan dalam file .html.
Pipa-pipa yang sama itu juga dapat diakses sebagai fungsi-fungsi typescript dalam file kelas komponen (.ts) Pertama instal perpustakaan seperti yang diperintahkan:
Dalam node_modules / angular2-moment sekarang akan menjadi file ".pipe.d.ts" seperti calendar.pipe.d.ts , date-format.pipe.d.ts dan banyak lagi.
Masing-masing berisi nama fungsi Typescript untuk pipa yang sama, misalnya, DateFormatPipe () adalah fungsi untuk amDateFormatPipe .
Untuk menggunakan DateFormatPipe dalam proyek Anda, impor dan tambahkan ke penyedia global Anda di app.module.ts:
Kemudian di komponen mana pun yang ingin Anda gunakan fungsinya, impor di atasnya, masukkan ke konstruktor dan gunakan:
Untuk menggunakan salah satu fungsi ikuti proses ini. Akan lebih baik jika ada satu cara untuk mendapatkan akses ke semua fungsi, tetapi tidak ada solusi di atas yang berfungsi untuk saya.
sumber
Jika Anda boleh menambahkan lebih banyak paket pihak ketiga, saya menggunakan perpustakaan angular2-moment . Instalasi cukup mudah, dan Anda harus mengikuti instruksi terbaru pada README. Saya juga menginstal pengetikan sebagai hasil dari ini.
Bekerja seperti pesona bagi saya, dan nyaris tidak menambahkan kode apa pun untuk membuatnya berfungsi.
sumber
Tidak yakin apakah ini masih menjadi masalah bagi orang, namun ... Menggunakan SystemJS dan MomentJS sebagai pustaka, ini menyelesaikannya untuk saya
Bekerja dengan baik dari sana untuk saya.
sumber
untuk angular2 RC5 ini bekerja untuk saya ...
instal momen pertama melalui npm
Kemudian impor momen di komponen yang ingin Anda gunakan
konfigurasikan saat terakhir di systemjs.config.js "map" dan "paket"
sumber
import 'moment/locale/de.js';
Terima kasih!Selain jawaban SnareChop, saya harus mengubah file pengetikan untuk momentjs.
Dalam
moment-node.d.ts
saya diganti:dengan
sumber
Moment.js sekarang mendukung TypeScript di v2.14.1.
Lihat: https://github.com/moment/moment/pull/3280
sumber
Versi saya sendiri menggunakan Moment in Angular
npm i moment --save
Impor momen pertama sebagai
_moment
, lalu deklarasikanmoment
variabel dengan tipe_moment.Moment
dengan nilai awal_moment()
.Impor polos saat tidak akan memberi Anda penyelesaian otomatis tetapi jika Anda akan mendeklarasikan momen dengan jenis
Moment
antarmuka dari_moment
namespace dari'moment'
paket yang diinisialisasi dengan momen namespace yang dipanggil_moment()
memberi Anda penyelesaian otomatis momen api itu.Saya pikir ini adalah cara yang paling sudut menggunakan saat tanpa menggunakan
@types
typings
atau penyedia sudut, jika Anda mencari penyelesaian otomatis untuk perpustakaan javascript vanilla seperti saat.sumber
npm install @types/moment --save
Coba tambahkan
"allowSyntheticDefaultImports": true
ketsconfig.json
.Apa yang dilakukan bendera?
Ini pada dasarnya memberitahu compiler TypeScript bahwa boleh saja menggunakan pernyataan impor ES6, yaitu
pada modul CommonJS seperti Moment.js yang tidak mendeklarasikan ekspor default. Bendera hanya memengaruhi pengecekan tipe, bukan kode yang dihasilkan.
Diperlukan jika Anda menggunakan SystemJS sebagai pemuat modul Anda. Bendera akan dihidupkan secara otomatis jika Anda memberi tahu kompiler TS Anda bahwa Anda menggunakan SystemJS:
Ini juga akan menghapus kesalahan yang dilakukan oleh IDE jika mereka dikonfigurasi untuk menggunakan
tsconfig.json
.sumber
untuk angular2 dengan systemjs dan jspm harus dilakukan:
sumber
Untuk pengguna ANGULAR CLI
Menggunakan perpustakaan eksternal ada dalam dokumentasi di sini:
https://github.com/angular/angular-cli/wiki/stories-third-party-lib
sumber
Saya mengikuti saran untuk mengizinkan allowSyntheticDefaultImports (karena tidak ada ekspor dari saat untuk digunakan untuk saya), menggunakan Sistem. Kemudian saya mengikuti saran seseorang untuk menggunakan:
Dengan saat dipetakan dalam konfigurasi system.js saya. Pernyataan impor lainnya tidak akan berfungsi untuk saya, untuk beberapa alasan
sumber
Berikut ini bekerja untuk saya:
Momentum-simpul tidak ada dalam repositori pengetikan. Anda harus mengarahkan ke Definitely Typed agar dapat berfungsi menggunakan awalan dt.
sumber
Dengan systemjs apa yang saya lakukan adalah, di dalam systemjs.config saya menambahkan peta
moment
Dan kemudian Anda dapat dengan mudah mengimpor
moment
hanya dengan melakukansumber
Saya tahu ini adalah utas lama, tetapi bagi saya solusi paling sederhana yang benar-benar berhasil adalah:
npm install moment --save
sumber