我有一個簡單的組件,它包括我在我的形式是這樣的:NgModel
<app-slider [min]="field.min" [max]="field.max" [value]="field.min"></app-slider>
組件如下:
HTML:
<input #mySlider
class="slider"
type="text"
name="slider"
data-provide="slider"
data-slider-min="1"
data-slider-max="3"
[attr.data-slider-min]="min"
[attr.data-slider-max]="max"
data-slider-step="1"
[attr.data-slider-value]="value"
data-slider-tooltip="show"/>
TS:
import {Component, ViewChild, Input} from '@angular/core';
declare var $ : any;
@Component({
selector: 'app-slider',
templateUrl: './slider.component.html',
styleUrls: ['./slider.component.css']
})
export class SliderComponent{
@ViewChild('mySlider') slider: any; // can be ElementRef;
@Input() min: number;
@Input() max: number;
@Input() value: number;
constructor() { }
ngAfterViewInit() {
// slider is available
$(this.slider.nativeElement).slider();
let value = $(this.slider.nativeElement).attr("data-slider-value");
$(this.slider.nativeElement).slider('setValue', value);
}
}
我想在我的組件上添加NgModel,以便我可以獲取並更改其值:
<app-slider [min]="field.min" [max]="field.max" [value]="field.min" [(ngModel)]="currentValue"></app-slider>
我該如何做到這一點?
我剛剛寫了與ssougnez答案几乎完全相同的代碼,但我使用jquery方法從滑塊獲取更新 $(this.slider.nativeElement).slider()。on('change',function (事件){ \t THIS.VALUE = event.value.newValue; \t this.valueChange.emit(THIS.VALUE); });' 問題是,我得到一個錯誤的值發生變化時。 EventEmitter變量未定義:'不能讀取'undefined'屬性'emit'。我知道這與雙向數據綁定無關。但是,你認爲這是由於ngAfterViewInit方法嗎? – Servietsky
@Servietsky看到更新,不要在'on'函數中使用'this' –
您也可以使用胖箭頭操作符來避免與此不匹配,對不對? – ssougnez