谁能告诉我,如何将jQuery与Angular一起使用
类MyComponent{
构造函数(){
//如何从这里查询DOM元素?
}
}
我知道有一些变通方法,比如预先操作DOM元素的类或id,但我希望有一种更干净的方法
与ng1相比,从Angular2使用jQuery是轻而易举的事。如果您使用的是TypeScript,则可以首先引用jQuery TypeScript定义
tsd安装jquery——保存
或
键入安装dt~jquery–global–save
TypescriptDefinitions不是必需的,因为您可以使用any作为$或jQuery
在角度组件中,您应该使用@ViewChild()从模板中引用DOM元素。视图初始化后,您可以使用此对象的nativeElement属性并传递给jQuery
将$(或jQuery)声明为JQueryStatic将为您提供对jQuery的类型化引用
从“@angular/platform browser dynamic”导入{bootstrap}”;
从“@angular/core”导入{Component,ViewChild,ElementRef,AfterViewInit};
声明var$:JQueryStatic;
@组成部分({
选择器:'ng selected',
模板:`<;选择#选择元素>;
<;option*ngFor=“#item of items”[value]=“item”[selected]=“item==selectedValue”>;{{item}}option<;/option>;
<;/select>;
<;h4>;{{selectedValue}}<;/h4>`
})
导出类NgChosenComponent实现AfterViewInit{
@ViewChild('selectElem')el:ElementRef;
项目=[‘第一’、‘第二’、‘第三’];
selectedValue='Second';
ngAfterViewInit(){
$(this.el.nativeElement)
.selected()
.on('change',(e,args)=>{
this.selectedValue=args.selected;
});
}
}
引导(NgChosenComponent);
此示例在plunker上提供:http://plnkr.co/edit/Nq9LnK?p=preview
tslint会抱怨selected不是$上的属性,要解决此问题,您可以在自定义*.d.ts文件中向JQuery接口添加定义
接口JQuery{
已选择(选项?:任意):JQuery;
}