3
當選擇下拉更改時,我調用(change)
指令的方法來檢查是否允許選擇的值,如果不允許選擇的值,則選擇再次返回上一個值(還原下拉菜單中的更改),但下拉菜單中的選定值仍顯示新的選定值,但ngModel
變量是以前的值,例如:Angular 2選擇(更改)事件,不更新下拉菜單中的值
我選擇改變從A到B
HTML:
<select (change)="doCheck()" [(ngModel)]="test">
<option [ngValue]="1">A</option>
<option [ngValue]="2">B</option>
</select>
組件:
test: number = 1;
doCheck(){
//Not allowed to change to B, so change back to A
this.test = 1;
}
的test
變量值1,而B是仍然在下拉列表中選中。
但是,當我在this.test = 1
上添加setTimeout
時,該值將變回A,但我不想在我的代碼中隨處添加setTimeout
。
任何幫助將不勝感激
我已經嘗試過了,但仍然沒有更新HTML中的選擇值和'(ngModelChange)'我不會知道新選定的值是什麼 – deanwilliammills
對不起,我不明白你的意思是「I將不知道新選定的值是什麼「。當調用ngModelChange()時,新選定的值已經分配給'this.test'。你也可以像'(ngModelChange)=「doCheck($ event)」' –
那樣顯式傳遞它,當'(ngModelChange)'在'[(ngModel)]'前面時,'[(ngModel)]'只在調用'(ngModelChange)'。所以我在'(ngModelChange)'前面移動了[[(ngModel)]',然後在調用'(ngModelChange)'前調用'[(ngModel)]',但仍然顯示** B **和不** A **,雖然'this.test'是1 – deanwilliammills