【发布时间】:2018-10-08 23:26:36
【问题描述】:
我正在使用 Angular 2 表单,并且在模板中具有下拉/选择,其数据与 ngModel 和 onChnage 事件绑定。我需要检测 ngModel 的先前值吗?我尝试过使用 data-* 属性 https://www.w3schools.com/tags/att_global_data.asp 将当前值存储在其中,希望它不会随 ngModel 值而改变,然后在事件触发时发回,但在传递更改时获取 NaN 值。
下拉/选择初始值是从数组即question[]映射的,当前defaultValue在“question.value”中
模板
<div *ngSwitchCase="'dropdown'"> <small>dropdown</small>
<div class="form-group">
{{question.value}}
<select [id]="question.key"
[formControlName]="question.key"
[(ngModel)]="question.value"
data-default-element="question.value"
(change)="onChangeValue($event, responseId, question.key, data-default-element , 'dropdown')"
(blur)="onChangeValue($event, responseId, question.key, data-default-element , 'dropdown')"
>
<option *ngFor="let opt of question.options"
[value]="opt.key" >{{opt.value}} </option>
</select>
</div>
</div>
组件
onChangeValue(event: any, givenResponseId:string, givenQuestionId:string, defaultValue:string, givenInputType:string) {
var givenAnswer = null;
console.log("defaultValue ",defaultValue);
if(event.target.value !="")
{
givenAnswer = event.target.value;
console.log("newValue ",givenAnswer );
}
}
【问题讨论】:
-
我建议您在使用响应式表单时不要使用 ngModel,除非您想实时更新某些内容。此外,您将
data-default-element(不是作为字符串)传递给您的更改方法。改为传递question.value,并删除ngModel,那么您有以前的/默认值吗? -
那么我的问题来自最初来自数据库的数据绑定和验证????
标签: angular typescript