각도 프로젝트에서 범위 슬라이더를 사용하고 싶은데 각도 4에 사용 가능한 모듈 하나를 사용해 보았습니다.
컴파일하는 동안 잘 작동하지만 배포를 위해 빌드하려고하면 아래 오류가 발생합니다.
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 = 'angular 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
도움이 되었기를 바랍니다! 코딩 즐기기
Cannot find name '$'
declare const $: any;
는 @ ... 데코레이터 위에 추가 합니다.
NPM Jquery NPM을 사용하여 jQuery 설치
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();
Cannot find name 'jQuery'
에서 선언하지 않으면 이 오류가 발생 .ts
합니다. 따라서 누군가가이 문제에 직면하면 그는이를 선언하기 만하면됩니다.
Angular에서 jQuery를 사용해서는 안됩니다. 가능하지만 (이 질문에 대한 다른 답변 참조) 권장하지 않습니다. 왜?
Angular는 메모리에 DOM의 자체 표현을 보유하고 document.getElementById(id)
jQuery 와 같은 쿼리 선택기 (와 같은 함수 )를 사용하지 않습니다 . 대신 모든 DOM 조작은 Renderer2 (및 * ngFor 및 * ngIf와 같은 Angular 지시문이 백그라운드 / 프레임 워크 코드에서 해당 Renderer2에 액세스)에 의해 수행됩니다. jQuery로 DOM을 직접 조작한다면 조만간 ...
정말로 jQuery를 포함하고 싶다면 (100 % 확실하게 버릴 프로토 타입을 덕 테이핑하기 위해), 적어도 npm install --save jquery
Google의 CDN에서 가져 오는 대신 package.json에 포함하는 것이 좋습니다 .
TLDR : Angular 방식으로 DOM을 조작하는 방법을 배우려면 먼저 공식적인 영웅 둘러보기 자습서를 참조하십시오 . https://angular.io/tutorial/toh-pt2 DOM 계층 구조에서 상위 요소에 액세스해야하는 경우 (부모 나
document body
) 또는 지침이 좋아하는 어떤 다른 이유로*ngIf
,*ngFor
사용자 정의 지시, 파이프와 같은 다른 각도 유틸리티[style.background]
,[class.myOwnCustomClass]
사용자의 요구를 만족하지 않는, 사용 Renderer2 : https://www.concretepage.com/angular-2/angular-4 -renderer2- 예제
constructor(private renderer: Renderer2, private el: ElementRef) {}
)에 대한 참조를 얻을 때 해당 자식을 필터링하거나 nativeElement-Property :에 액세스하여 직접 요소를 조작 할 수 있습니다 ngOnInit() { this.renderer.addClass(this.el.nativeElement, 'wild'); }
. 자세한 내용을 알려주는 방법은 다음과 같습니다. alligator.io/angular/using-renderer2
*ngIf
, *ngFor
, 지시, 파이프 및 CSS에 대한 (당신에 의해) 사용자 정의 ngClass
, [style.background]
그리고 [class.myCustomCssClass]
. 추가 도움말 : angular.io/tutorial/toh-pt2
이 시도:
import * as $ from 'jquery/dist/jquery.min.js';
또는 angular-cli.json에 스크립트를 추가합니다.
"scripts": [
"../node_modules/jquery/dist/jquery.min.js",
]
.ts 파일에서 :
declare var $: any;
다른 라이브러리를 프로젝트에서 사용할 필요가 있다면 --typescript-- 프로젝트에서뿐만 아니라-angle-메서드, 유형, 함수 등의 정보가있는 tds (TypeScript 선언 파일)를 찾을 수 있습니다., 일반적으로 가져올 필요없이 TypeScript에서 사용할 수 있습니다. var가 마지막 자원임을 선언하십시오.
npm install @types/lib-name --save-dev
웹팩을 사용하여 제공 할 수 있습니다 . 그런 다음 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'
}),
]
};
typescript에 대한 해결책 :
1 단계:
npm install jquery
npm install --save-dev @types/jquery
2 단계 : Angular.json에서 다음을 추가합니다.
"scripts": [
"node_modules/jquery/dist/jquery.min.js",
]
또는 index.html에서 다음을 추가하십시오.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
3 단계 : jquery를 사용하려는 * .component.ts
import * as $ from 'jquery'; // dont need "declare let $"
그런 다음 javaScript와 동일한 jquery를 사용할 수 있습니다. 이런 식으로 VScode는 Typescript에 의한 자동 제안을 지원합니다.
ngOnInit() {
const $ = window["$"];
$('.flexslider').flexslider({
animation: 'slide',
start: function (slider) {
$('body').removeClass('loading')
}
})
}