2017-02-09 367 views
2
<input type="number" style="width: 100px" [(ngModel)]="trait.userMinimum" (ngModelChange)="setThresholds()"> 

該模型被下面的代碼改變,並反映在屏幕上,但然後ngModelChange不會被調用。我希望它被調用,而不管它在其他地方被改變或者作爲財產或任何理由。如果模型更改它,則調用ngModelChange。ngModel變化,ngModelChange不叫

<p-slider [(ngModel)]="trait.userMinimum" 
    [style]="{'width':'100%'}" 
    [min]="trait.min" 
    [max]="trait.max" 
    class="ui-g-8"></p-slider> 
    <span class="ui-g-2">{{trait.max}}</span> 

要澄清ngModel按預期工作,我移動滑塊的數字更改,我輸入滑塊更改的數字。唯一不起作用的是滑塊更改,並且模型更改未在輸入中調用。

+0

你應該使用'DoCheck'櫃面'onChange'不火。 https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html#!#docheck –

+0

嗯我嘗試過,但它是非常非高性能 –

+0

請創建一個演示你的問題的闖入者 – yurzui

回答

5
//This is a **two way** binding, so below code will not take effect 
[(ngModel)]="trait.userMinimum" 
(ngModelChange)="setThresholds()" //This will not be fired 

的解決方案是如下更改,並刪除 「()」,這樣的get和set分開:

[(ngModel)]="trait.userMinimum" ---> [ngModel]="trait.userMinimum" 
+0

沒辦法,我想知道這是否會工作,那麼我只需要做(ngModel)=「 setThresholds()「來調用方法? –

+0

不工作我有完全相同的代碼:''然後在類'private con_no1:any; saverange(newValue ){console.log(newValue);}' – ishandutta2007