AngularプロジェクトでRangeスライダーを使いたいのですが、Angular 4で利用可能なモジュールを1つ使ってみました。
コンパイル中は問題なく動作しますが、デプロイ用にビルドしようとすると、以下のエラーが発生します。
Angularプロジェクトで直接jQueryプラグインを使用するオプションを確認しましたが、Angular 2でそれを実行するためのオプションしか得られません。
Angular 4でjQueryプラグインを使用できる方法はありますか?
私にお知らせください。
前もって感謝します!
はい、Angular 4とjqueryを併用できます
ステップ:
1)index.html
では、タグの下の行の下に置きます。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
2)以下のコンポーネントtsファイルでは、varを次のように宣言する必要があります。
import { Component } from '@angular/core';
declare var jquery:any;
declare var $ :any;
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'abgular 4 with jquery';
toggleTitle(){
$('.title').slideToggle(); //
}
}
そして、このように対応するHTMLファイルのためにこのコードを使います:
<h1 class="title" style="display:none">
{{title}}
</h1>
<button (click)="toggleTitle()"> clickhere</button>
これはあなたのために働くでしょう。ありがとう
Npmでjqueryをインストールする
npm install jquery --save
タイピングを追加する
npm install --save-dev @types/jquery
Angular-cli.jsonにスクリプトを追加する
"apps": [{
...
"scripts": [
"../node_modules/jquery/dist/jquery.min.js",
],
...
}]
プロジェクトを構築して奉仕する
ng build
お役に立てれば!コーディングを楽しむ
NPMを使用してjQueryをインストールする Jquery NPM
npm install jquery
JQuery宣言ファイルをインストールする
npm install -D @types/jquery
.ts内にjQueryをインポートする
import * as $ from 'jquery';
クラス内を呼び出す
export class JqueryComponent implements OnInit {
constructor() {
}
ngOnInit() {
$(window).click(function () {
alert('ok');
});
}
}
@ types/jqueryをインストールしたので、jQuery変数を宣言する必要はありません。
declare var jquery:any; // not required
declare var $ :any; // not required
あなたはどこでもjQueryにアクセスできるはずです。
以下が動作するはずです。
jQuery('.title').slideToggle();
AngularではjQueryを使用しないでください。それは可能ですが(この質問に対する他の回答を見てください)、それはお勧めできません。どうして?
Angularは、そのメモリ内にDOMの独自の表現を保持し、jQueryのようなクエリセレクタ(document.getElementById(id)
のような関数)は使用しません。代わりに、すべてのDOM操作はRenderer2(およびbackground/framework-codeでそのRenderer2にアクセスする* ngForや* ngIfなどのAngularディレクティブ)によって行われます。自分でjQueryを使ってDOMを操作すれば、遅かれ早かれ...
あなたが本当にjQueryを(あなたが100%確実に捨てるであろういくつかのプロトタイプをアヒルテーピングするために)含みたいならば、私はそれをgoogleのCDNから得るよりnpm install --save jquery
であなたのpackage.jsonに少なくとも含めることを勧めます。
TLDR:Angularの方法でDOMを操作する方法を学ぶためには、まず公式のツアーオブヒーローズチュートリアルを読んでください: https://angular.io/tutorial/toh-pt2 DOM階層の上位にある要素(parentまたは
document body
)にアクセスする必要がある場合、または*ngIf
、*ngFor
、カスタムディレクティブ、パイプなどのディレクティブ、および[style.background]
、[class.myOwnCustomClass]
などの角度ユーティリティがニーズを満たさない場合は、Renderer2を使用します。 https://www.concretepage.com/angular-2/angular-4-renderer2-example
これを試して:
import * as $ from 'jquery/dist/jquery.min.js';
または、angular-cli.jsonにスクリプトを追加します。
"scripts": [
"../node_modules/jquery/dist/jquery.min.js",
]
そしてあなたの.tsファイルで:
declare var $: any;
あなたはそのようにあなたのjqueryタイピングバージョンを更新することができます
npm install --save @types/jquery@latest
私はこれと同じエラーを持っていたし、私はsolution.itのためにネットをサーフィンしている5日間は私のために働いていたし、それはあなたのために動作するはずです
プロジェクトで他のライブラリを使用する必要がある場合--TypeScript - プロジェクトだけではなく - angle - あなたはtds(TypeScript Declaration File)を探してみることができます。そしてそれはメソッド、タイプ、関数などの情報を持ちますこれはTypeScriptで使用できますが、通常はインポートする必要はありません。 varが最後のリソースであることを宣言する
npm install @types/lib-name --save-dev
試してみてください - let $:anyを宣言してください。
または 'jquery/dist/jquery.min.js'から$として$をインポートします。ライブラリの正確なパスを指定する
Webpackを使って provide itすることができます。それは自動的にDOMに注入されます。
module.exports = {
context: process.cwd(),
entry: {
something: [
path.join(root, 'src/something.ts')
],
vendor: ['jquery']
},
devtool: 'source-map',
output: {
path: path.join(root, '/dist/js'),
sourceMapFilename: "[name].js.map",
filename: '[name].js'
},
module: {
rules: [
{test: /\.ts$/, exclude: /node_modules/, loader: 'ts-loader'}
]
},
resolve: {
extensions: ['.ts', '.es6', '.js', '.json']
},
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
}),
]
};