Angular-「HammerJSが見つかりませんでした」


94

マテリアルデザインをプロジェクトにインポートしようとしている単純な角度のプロジェクトで作業していますが、一部のコンポーネントが正しく機能せず、コンソールの警告で次のように表示されます。

HammerJSが見つかりませんでした。特定のAngular Materialコンポーネントが正しく機能しない場合があります。

私もhammerjsインストールしました@angular/material。この問題を解決するにはどうすればよいですか?



サイドノート

それは注目に値することができることをあなたがしている場合はhammerjsインストールし、コンポーネントがまだあなたが使用している作るために、正しくレンダリングされていないangular material コンポーネントとしていないHTML要素materialize-css のクラスを。あなたがいる場合している使用してmaterialize-cssの代わりにangular materialあなたは別に、プロジェクトに追加する必要があります。

回答:


162

package.jsonファイルにこれを追加しますdependencies

"hammerjs": "^ 2.0.8"、

または、代替の自動方法がnpm i hammerjs --save必要なnpm i hammerjs@2.0.8 --save場合2.0.8は、ルートプロジェクトフォルダーに入力するか(または、最新バージョンなので、必要に応じて)テストして、問題が引き続き発生する場合は、node_modulesフォルダーを削除してルートに再インストールしてくださいプロジェクトフォルダーも実行npm installすることにより、ファイル内のdependencies存在する場所hammerjs)、devDependencies...、をチェックしてpackage.jsonインストールします。

また、おpolyfills.ts持ちでない方(お持ちでない方はお持ちになることをお勧めします )

import 'hammerjs / hammer';

このように、あなたの角度のアプリがあるため、実行されている間、それが見られるpolyfills.ts自体は、インポートによって呼び出されます(通常の場合には、他にあなたがそれを確認することができます)main.ts、角度アプリのエントリポイントです。


9
importステートメントを追加しpolyfills.tsて警告を止めます。これはすばらしいことです。しかし、マテリアルデザインコンポーネントがまだ正しくレンダリングされていません:/質問の説明にスクリーンショットを含めます。これまでのご協力に感謝します!
Danoram '26 / 12/16

2
番号。しかし、解決策を見つけたら、またチェックします。
Danoram

2
CSSリンクをindex.htmlファイルに追加するのを忘れたようです。whoopsie ..すべては今うまく見えます。助けてくれて乾杯!
ダノラム2017年

3
必要なコンポーネントを使用していませんhammer。これらの警告を無効にする方法はありますか?私のテストでは、これらの30のようになります。
CWSpear 2017年

1
import 'hammerjs / hammer'; 私への警告を削除
silentsudo

102

hammerjsをインストールする

  • NPM

    npm install --save hammerjs
  • (または)糸付き

    yarn add hammerjs

次にhammerjs、アプリのエントリポイント(例:src / main.ts)にインポートします。

import 'hammerjs';




1
良い答えです。これがおそらく、この質問を見つけた多くの人が知りたいと思っていることだとは思いませんでした
Danoram

7
これは正解です。さらに、実行時の警告を修正するために、マテリアルコンポーネントを使用import 'hammerjs';するすべての*.spect.tsテストファイルを追加する必要がありますng test
カルトゥーチョ2017

3
私は変更する必要はありませんtsconfig.jsonでしたが、インポートは機能します。回答に感謝します。
スプリアス2017

すべてのスペックファイルにインポートを追加する必要がある場合、それをkarma.confファイルに追加する方法はありませんか?
Jeff

引用元はに言うimport it on your app's entry point (e.g. src/main.ts)のではなくapp.module.tsに。もちろん、それは実際にはどうでもいいことです。
Stack

9

あなたにはsystemjs.config.js、ファイル、あなたはまた、次のエントリを追加する必要があります。

'hammerjs': 'npm:hammerjs/hammer.js',

もちろん一緒に:

'@angular/material': 'npm:@angular/material/bundles/material.umd.js',

(少なくともGHリポジトリにあるものに基づいて)コードに欠けているもう1つのことは、マテリアルデザインCSSを含めることindex.htmlです。これをファイルに追加します。

<link href="https://rawgit.com/angular/material2-builds/master/core/theming/prebuilt/indigo-pink.css" rel="stylesheet">

これがお役に立てば幸いです。


返信に時間がかかってごめんなさい。プロジェクトでsystemjsを使用しているとは思わない。あなたは私がCSSをインポートするのを忘れているのは正しいです!本当にありがとうございます。
Danoram 2017年

6

これは私にとってはうまくいきました(そしてこれはionic4でも同様です)hammer.jsを動かせるようにすることができます-そして(下の)material.angular.ioを使ってイオン化することもできます

ハンマー+イオン(ハンマー+アンギュラー):

npm install --save hammerjs
npm install --save @types/hammerjs

その後

package.json
make sure in dependencies there is this line
"hammerjs": "^2.0.8",

その後

tsconfig.json - added types as seen below

"compilerOptions": {
...
...
"types": [
"hammerjs"
]
}

その後

in app.component.ts (only there)
import 'hammerjs';

その後

in html file (I just took out the first and last < > signs)
div id="myElement"></div
in .ts file

hammerjsサイトのサンプルコードが機能する

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.");
});

Hammer + ionic + material:マテリアルハンマーをイオンで機能させる

in app.module
import { HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';
import { GestureConfig } from '@angular/material';

providers: [
    { provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig },
]

出来上がり、マテリアルスライダーが機能します。


3

コマンドラインまたはPowerShellを開き、angular2プロジェクトのディレクトリを入力します。、Enterキーを押してcd your-project's-root貼り付けます。

npm install hammerjs --save

Npmは自動的にすべての依存関係をpackage.jsonファイルに追加します。


@torazaburo npmのHammerjsバージョンは頻繁に更新されているため、OPは、npmコマンドを使用してhammerjsをインストールすると、最新の状態で動作することを確認できます。
親切なユーザー

@torazaburo正直に--save言うと、npmでインストールしているときに使用しなかったし、すべてがスムーズに進みましたが、あなたは非常に経験豊富なユーザーなので、議論するのは無分別でしょう。
親切なユーザー

--save自動的に使われるのでもう必要ないと思います。docs.npmjs.com/cli/install
スプリアス

1
省略し--saveても機能しますが、package.jsonファイルには追加されません。つまりnpm install、将来の実行時に自動的にインストールされません
Niklas

2
  1. npm install hammerjs --save
  2. npm install @ types / hammerjs --save-dev
  3. これをコンパイラオプションの下のtypescript.configに追加します

    "タイプ":["hammerjs"]

  4. これをapp.components.tsに追加します。

ハンマー


あなた、あなたは救世主であり、私が次の息子をなんとかして獲得した場合、彼はあなたにちなんで名付けられます!
codingbuddha

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.