我在HTML中使用了可搜索的kendo-dropdownlist。如果在下拉列表中选择了值,则代码可以正常工作。但是,如果未选择任何内容,则会在Chrome开发人员工具中显示以下错误: 错误TypeError:无法读取未定义的属性“值”。
<form class="form-horizontal" #projDetails="ngForm">
<div class="form-group">
<label class="control-label col-sm-2" for="Approver">Approver</label>
<div class="col-sm-6">
<kendo-dropdownlist [data]="IdData"
[textField]="'text'"
[valueField]="'value'"
[filterable]="true"
(valueChange)="valueChange($event)"
(filterChange)="filterChange($event)"
[(ngModel)]="SelectedIdItem"
name="SelectedIdItem"
[popupSettings]="{ height: 300, width: 300 }"
#SelectedIdItemControl="ngModel"
required
title="Start typing to search">
</kendo-dropdownlist>
</div>
</div>
</form>
<button type="submit" class="btn btn-primary" (click)="SubmitDetails(projDetails);">Submit></button>
这是组件类,单击“提交”按钮:
public SubmitDetails(form: NgForm) {
var dataProjDetail = {
'Id': form.value.SelectedIdItem.value == undefined ? null : form.value.SelectedIdItem.value
};
//passing data to service
}
我尝试检查未定义的值并使用替换为空
form.value.SelectedIdItem.value == undefined ? null : form.value.SelectedIdItem.value
但是仍然无法正常工作。请指导如何处理问题
答案 0 :(得分:0)
别担心,看起来一切正常。当然,值不是undefined和null的属性。但是我们可以使用<button [disabled]="!formGroup.valid">Submit</button>
或
SubmitDetails(form: ngForm) {
if (! form.valid) return;
...
}
在提交之前拒绝不良数据。通常使用formGroup,所以我不能确定ngForm.valid可以,但是那里的逻辑相同。