我有一個組件,它帶有輸入文本字段,我已使用JQuery將輸入事件偵聽器附加到該文本字段。當輸入的值發生變化時,我想調用一個Typescript函數,但它會拋出未被捕獲的TypeError。Angular 2從Jquery調用Typescript函數會導致未被捕獲的TypeError
這裏是我的代碼:
import {Component, Input, Output, EventEmitter, ElementRef, OnInit} from 'angular2/core';
declare var jQuery: any;
@Component({
selector: 'setting-priority',
template: '<input [(ngModel)]="priority" class="setting-priority" type="text">'
})
export class SettingPriorityComponent implements OnInit{
@Input() priority: number;
@Output() prioChanged: EventEmitter<number> = new EventEmitter();
constructor(private elementRef:ElementRef) { }
ngOnInit() {
jQuery(this.elementRef.nativeElement).find('input').on('input', function() {
// Here I will pass the changed value to onChange function
this.onChange();
});
}
ngOnChanges(changes) {
this.prioChanged.emit(this.priority);
}
// In this function I will receive the value and assign it to the priority variable
onChange() {
console.log("onchange!");
}
}
我使用jQuery因爲輸入值將被編程設置 - 在這種情況下角的變化探測不起作用Details here
當我觸發輸入事件,我收到一個未捕獲TypeError:this.onChange不是函數
我在做什麼錯?
的偉大工程!謝謝!我發現另一個方法 - 將JavaScript變量綁定到角度上下文,然後調用使用它的函數: 'var self = this;' 'jQuery(this.elementRef.nativeElement).find(' ('input',function { self.onChange(); });' – Eugenz