Traté de usarlo con enlaces de tipografía:
npm install moment --save
typings install moment --ambient -- save
test.ts:
import {moment} from 'moment/moment';
Y sin:
npm install moment --save
test.ts:
var moment = require('moment/moment');
Pero cuando llamo a moment.format (), recibo un error. Debería ser simple, ¿alguien puede proporcionar una combinación de línea de comando / importación que funcione?
typescript
angular
Sergey Aldoukhov
fuente
fuente
Respuestas:
Actualización de abril de 2017:
A partir de la versión 2.13.0, Moment incluye un archivo de definición de mecanografiado. https://momentjs.com/docs/#/use-it/typescript/
Simplemente instálelo con npm, en su tipo de consola
Y luego, en su aplicación Angular, importar es tan fácil como esto:
Eso es todo, ¡obtienes soporte completo de Typecript!
Edición de bonificación: para escribir una variable o propiedad como
Moment
en Typecript, puede hacer esto, por ejemplo:fuente
moment
es un recurso global de terceros. El momento en que el objeto vivewindow
en el navegador. Por lo tanto, no es correctoimport
en su aplicación angular2. En cambio, incluya el<script>
etiqueta en su html que cargará el archivo moment.js.Para hacer feliz a TypeScript, puede agregar
en la parte superior de sus archivos donde lo usa para detener los errores de compilación, o puede usar
o use tsd para instalar el archivo moment.d.ts que TypeScript podría encontrar por sí mismo.
Ejemplo
Solo asegúrese de agregar la etiqueta de script en su html o el momento no existirá.
Módulo de carga
moment
Primero, necesitaría configurar un cargador de módulos como System.js para cargar los archivos commonjs del momento
Luego, para importar el momento en el archivo donde sea necesario, use
o
EDITAR:
También hay opciones con algunos paquetes como Webpack o SystemJS Builder o Browserify que mantendrán el momento alejado del objeto de la ventana. Para obtener más información sobre estos, visite sus respectivos sitios web para obtener instrucciones.
fuente
System
cargar en la versión de momento del nodo commonjs y luego podría hacer referencia a élimport * as moment from 'moment';
o con elimport moment = require('moment');
que para todos los intentos y propósitos son idénticos, pero tienen algunas diferencias sutiles en mecanografiado.typings install moment --ambient -- save
no despliegatypings
el archivo de definición y crea la referencia a///<reference path="./path/to/moment.d.ts" />
? Tengo el mismo error cuando ejecutonpm run tsc
import
momento.Lo siguiente funcionó para mí.
Primero, instale las definiciones de tipo por el momento.
typings install moment --save
(Nota: NO
--ambient
)Luego, para evitar la falta de una exportación adecuada:
fuente
import moment from "moment";
lugar para que funcione.import * as moment from 'moment';
es la llave.Yo iría con lo siguiente:
npm install moment --save
A
systemjs.config.js
lamap
matriz de su archivo agregue:'moment': 'node_modules/moment'
para
packages
agregar matriz:'moment': { defaultExtension: 'js' }
En su component.ts use:
import * as moment from 'moment/moment';
y eso es. Puede usar desde la clase de su componente:
today: string = moment().format('D MMM YYYY');
fuente
Estamos usando módulos ahora,
tratar
import {MomentModule} from 'angular2-moment/moment.module';
después
npm install angular2-moment
http://ngmodules.org/modules/angular2-moment
fuente
npm install moment --save
,npm install @types/moment --save
stackoverflow.com/questions/35166168/…import * as moment from 'moment';
Para usarlo en un
Typescript
proyecto necesitará instalar moment:npm install moment --save
Después de instalar el momento, puede usarlo en cualquier
.ts
archivo después de importarlo:import * as moment from "moment";
fuente
--- Actualización 11/01/2017
Typings ahora está en desuso y fue reemplazado por npm @types . A partir de ahora, obtener declaraciones de tipo no requerirá herramientas aparte de npm. Para usar Moment no necesitará instalar las definiciones de tipo a través de @types porque Moment ya proporciona sus propias definiciones de tipo.
Por lo tanto, se reduce a solo 3 pasos:
1 - Instalar momento que incluye las definiciones de tipo:
2 - Agregue la etiqueta de script en su archivo HTML:
3 - Ahora puedes usarlo. Período.
--- Respuesta original
Esto se puede hacer en solo 3 pasos:
1 - Instalar definición de momento - archivo * .d.ts :
2 - Agregue la etiqueta de script en su archivo HTML:
3 - Ahora puedes usarlo. Período.
fuente
declare var moment;
Sin embargo, tipificaciones no funciona para mí. Después de escribirmoment().
no intellisense. Supongo que me faltan algunos pasos aquí.Para Angular 7+ (también admite 8 y 9) :
1: Instalar momento por comando
npm install moment --save
2: No agregue nada en el
app.module.ts
3: Simplemente agregue la declaración de importación en la parte superior de su
component
archivo o cualquier otro como este:import * as moment from 'moment';
4: Ahora puede usarlo
moment
en cualquier parte de su código. Al igual que:myDate = moment(someDate).format('MM/DD/YYYY HH:mm');
fuente
import * as moment_ from 'moment'; const moment = moment_;
contrario estaba obteniendoError: Cannot call a namespace ('moment')
moment_
Es solo un nombre literal. Puede ser cualquier cosa, creo ...import * as moment from 'moment';
aumenta el tamaño del paquete en ~ 500kb. Hay un buen artículo que explica el problema con una solución medium.jonasbandi.net/…con ng CLI
en app.module
en componente
así importas momento una vez
ACTUALIZACIÓN Angular => 5
Para mí trabaja en prod con aot y también con universal
No me gusta usar ninguno, pero usar momento. Momento que obtuve
fuente
Parameter 'moment' implicitly has an 'any' type
errorLa biblioteca angular2-moment tiene tuberías como {{myDate | amTimeAgo}} para usar en archivos .html.
También se puede acceder a esas mismas canalizaciones como funciones de mecanografía dentro de un archivo de clase de componente (.ts). Primero instale la biblioteca como se indica:
En node_modules / angular2-moment ahora habrá archivos ".pipe.d.ts" como calendar.pipe.d.ts , date-format.pipe.d.ts y muchos más.
Cada uno de ellos contiene el nombre de la función de mecanografía para la tubería equivalente, por ejemplo, DateFormatPipe () es la función para amDateFormatPipe .
Para usar DateFormatPipe en su proyecto, impórtelo y agréguelo a sus proveedores globales en app.module.ts:
Luego, en cualquier componente donde desee utilizar la función, impórtelo en la parte superior, inyecte en el constructor y use:
Para usar cualquiera de las funciones, siga este proceso. Sería bueno si hubiera una forma de obtener acceso a todas las funciones, pero ninguna de las soluciones anteriores funcionó para mí.
fuente
Si está de acuerdo en agregar más paquetes de terceros, utilicé la biblioteca angular2-moment . La instalación fue bastante sencilla, y debe seguir las últimas instrucciones en el archivo README. También instalé tipings como resultado de esto.
Funcionó como un encanto para mí, y apenas agregué ningún código para que funcione.
fuente
Sin embargo, no estoy seguro de si esto sigue siendo un problema para las personas ... Al usar SystemJS y MomentJS como biblioteca, esto me resolvió
Funciona bien desde allí para mí.
fuente
para angular2 RC5 esto funcionó para mí ...
primer momento de instalación a través de npm
Luego importe el momento en el componente que desea usar
finalmente configure el momento en systemjs.config.js "mapa" y "paquetes"
fuente
import 'moment/locale/de.js';
¡Gracias!Además de la respuesta de SnareChop, tuve que cambiar el archivo de tipificación por momentos.
En
moment-node.d.ts
reemplacé:con
fuente
Moment.js ahora es compatible con TypeScript en v2.14.1.
Ver: https://github.com/moment/moment/pull/3280
fuente
Mi propia versión de usar Moment in Angular
npm i moment --save
Primero importa el momento como
_moment
, luego declara lamoment
variable con tipo_moment.Moment
con un valor inicial de_moment()
.La importación simple del momento no le dará ninguna finalización automática, pero si declara el momento con la
Moment
interfaz de tipo desde el_moment
espacio de nombres desde el'moment'
paquete inicializado con el espacio de nombres de momento invocado_moment()
le dará la finalización automática de la API del momento.Creo que esta es la forma más angular de usar moment sin usar
@types
typings
o proveedores angulares, si está buscando la finalización automática de bibliotecas javascript de vainilla como moment.fuente
npm install @types/moment --save
Intenta agregar
"allowSyntheticDefaultImports": true
a tutsconfig.json
.¿Qué hace la bandera?
Básicamente, esto le dice al compilador TypeScript que está bien usar una declaración de importación ES6, es decir
en un módulo CommonJS como Moment.js que no declara una exportación predeterminada. La bandera solo afecta la verificación de tipo, no el código generado.
Es necesario si usa SystemJS como su cargador de módulos. El indicador se activará automáticamente si le dice a su compilador de TS que usa SystemJS:
Esto también eliminará cualquier error que arrojen los IDE si están configurados para utilizar el
tsconfig.json
.fuente
para angular2 con systemjs y jspm tenía que hacer:
fuente
Para usuarios de CLI ANGULAR
El uso de bibliotecas externas se encuentra en la documentación aquí:
https://github.com/angular/angular-cli/wiki/stories-third-party-lib
fuente
Seguí los consejos para permitir allowSyntheticDefaultImports (ya que no hay exportación de momento para usar), usando System. Luego seguí el consejo de alguien para usar:
Con el momento asignado en mi configuración system.js. Las otras declaraciones de importación no funcionarían para mí, por alguna razón
fuente
Lo siguiente funcionó para mí:
El nodo de momento no existe en el repositorio de tipings. Debe redirigir a Definitely Typed para que funcione con el prefijo dt.
fuente
Con systemjs lo que hice es, dentro de mi systemjs.config agregué mapa para
moment
Y luego puede importar fácilmente
moment
simplemente haciendofuente
Sé que es un hilo viejo, pero para mí la solución más simple que realmente funcionó fue:
npm install moment --save
fuente