javascript - Angular 2-''No se pudo encontrar HammerJS''
material-design hammer.js (7)
Estoy trabajando en un proyecto angular2 simple donde estoy tratando de importar Material Design en mi proyecto pero algunos de los componentes no funcionan correctamente y una advertencia de la consola dice:
No se pudo encontrar HammerJS. Ciertos componentes de material angular pueden no funcionar correctamente.
Tengo
hammerjs
instalados y también
@angular/material
.
¿Cómo resuelvo este problema?
Mi proyecto se puede encontrar en este repositorio de Github
Nota al margen
Vale la pena señalar que si tiene
hammerjs
instalados y sus componentes aún no se
hammerjs
correctamente para asegurarse de que está utilizando
componentes de
angular material 2
y no elementos html con
clases
materialize-css
.
Si
está
utilizando
materialize-css
lugar de
angular material 2
,
deberá agregarlo a su proyecto por separado.
Abra su línea de comandos o PowerShell, escriba el directorio de su proyecto angular2:
cd your-project''s-root
de su proyecto
cd your-project''s-root
enter y pegue:
in html file (I just took out the first and last < > signs)
div id="myElement"></div
in .ts file
Npm agregará automáticamente todas las dependencias en su archivo
package.json
.
En su archivo
package.json
agregue esto a las
dependencies
"hammerjs": "^ 2.0.8",
O si desea una forma automática alternativa, simplemente puede escribir
npm i hammerjs --save
(o
npm i [email protected] --save
si lo desea, ya que
2.0.8
es la última versión hoy
en
día)
en la carpeta del proyecto raíz
y pruebe entonces, si el problema persiste, intente eliminar la carpeta
node_modules
y reinstalarla en la
carpeta raíz del proyecto también
ejecutando
npm install
que verificará las
dependencies
(
donde reside
hammerjs
),
devDependencies
..., en el archivo
package.json
e instálelo ellos.
También en sus
polyfills.ts
(se recomienda tener uno si no lo ha hecho)
importar ''hammerjs / hammer'';
Por lo tanto, se encontrará mientras se ejecuta su aplicación angular, ya que
polyfills.ts
se llama por importación
(en un caso normal, de lo contrario puede verificarlo)
en
main.ts
que es el punto de entrada de las aplicaciones angulares.
En su archivo
systemjs.config.js
también necesita agregar la siguiente entrada:
''hammerjs'': ''npm:hammerjs/hammer.js'',
junto con por supuesto:
''@angular/material'': ''npm:@angular/material/bundles/material.umd.js'',
La otra cosa que falta en su código (al menos en función de lo que tiene en el repositorio de GH) es la inclusión del CSS de Material Design, agregue esto a su archivo
index.html
:
<link href="https://rawgit.com/angular/material2-builds/master/core/theming/prebuilt/indigo-pink.css" rel="stylesheet">
Espero que esto ayude.
Instalar con
let element2 = document.getElementById(''myElement'');
let hamming = new Hammer(element2);
hamming.on("panleft panright tap press pressup", function(ev) {
element2.textContent = ev.type +" gesture detected.";
console.log(ev.type +" gesture detected.");
});
o
in app.module
import { HAMMER_GESTURE_CONFIG } from ''@angular/platform-browser'';
import { GestureConfig } from ''@angular/material'';
providers: [
{ provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig },
]
Después de la instalación, impórtela en el punto de entrada de su aplicación (por ejemplo, src / main.ts).
npm install hammerjs --save
Instalar hammerjs
-
con npm
npm install --save hammerjs
-
(o) con hilo
yarn add hammerjs
Luego importe
hammerjs
en el punto de entrada de su aplicación (por ejemplo, src / main.ts).
import ''hammerjs'';
esto funcionó para mí (y esto también es con ionic4) podría hacer que hammer.js funcione, y también iónico con material.angular.io (en la parte inferior)
Martillo + iónico (martillo + angular también):
npm install --save hammerjs
npm install --save-dev @types/hammerjs
entonces
import ''hammerjs'';
entonces
{
"compilerOptions": {
"types": [
"hammerjs"
]
}
}
entonces
npm install --save hammerjs
npm install --save @types/hammerjs
entonces
package.json
make sure in dependencies there is this line
"hammerjs": "^2.0.8",
Código de muestra del sitio hammerjs funciona
tsconfig.json - added types as seen below
"compilerOptions": {
...
...
"types": [
"hammerjs"
]
}
Martillo + material iónico +: para que el material martillo funcione con iónico
in app.component.ts (only there)
import ''hammerjs'';
y listo, tu deslizador de material funciona.