首页 > 解决方案 > Angular 表单绑定时强制值类型

问题描述

我们在 Angular 中有一个表单,它有一个显示项目列表的选择:

<select formControlName="koppelingTypeId" id="KoppelingTypeId" class="form-control">
    <option value="">Selecteer een type</option>
    <option [value]="koppeling.koppelingTypeId" *ngFor="let koppeling of koppelingen">{{koppeling.naam}}</option>
</select>

绑定值的类型koppelingTypeId是数字。然而,当请求表单控件的值时,我们总是将其作为字符串取回。回发到 .NET Core 端点时,这不会被视为有效值,因此会出现错误。

有没有办法强制表单将值保留为字符串?

相关,但略有不同。我们还有几个需要 Guid 值(通过正则表达式验证器强制执行)的字段,我们希望null在字段为空时返回这些值,否则会在 .NET Core 中产生相同的反序列化问题。

谢谢

标签: angular

解决方案


您需要使用[ngValue]而不是[value]. 这将保持适当的数据类型。

<form [formGroup]="form" *ngIf="form">
    <select formControlName="selectCtrl" class="form-control">
    <option [ngValue]="null">Selecteer een type</option>
    <option [ngValue]="link.linkId" *ngFor="let link of links">{{link.name}}</option>
</select>

这是一个堆栈闪电战,表明它有效


推荐阅读