代码示例
使用模板驱动的表单非常容易。但让您对验证的控制较少。
<select name="fruits" [ngModel] required>
<option value="" disabled selected>Select your option</option>
<option *ngFor="let fruit of selectData;" [ngValue]="fruit">{{fruit}}</option>
</select>
模板驱动示例
<select class="form-control" id="state" required [(ngModel)]="address.state" name="state" #state="ngModel">
<option value="" disabled selected>Select your option</option>
<option *ngFor="let state of states" [value]="state">{{state}}</option>
</select>
模型驱动示例
这是一个模型驱动的示例。您可以使用模型驱动表单更好地控制表单,但您尝试完成的这个特定任务很简单。使用模板驱动我相信您需要做的就是添加一个占位符。
这是我处理向组合框添加状态的方式,
在component.html文件中,
<select (blur)="stateValidate('State *Required', 'State Name')"
class="form-control" id="state_address" formControlName="state_address">
<option *ngFor="let state of states">{{state}}</option>
</select>
在component.ts文件中,
states = ['Select State', 'Alabama', 'Alaska', 'American Samoa', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'District of Columbia', 'Federated States of Micronesia', 'Florida', 'Georgia', 'Guam', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Marshall Islands', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', 'Northern Mariana Islands', 'Ohio', 'Oklahoma', 'Oregon', 'Palau', 'Pennsylvania', 'Puerto Rico', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virgin Island', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'];
说明
注意第一个值是Select State。在我的情况下,除非用户将其更改为实际状态,否则这不会验证。
也就是说,如果用户确实将其更改为一个状态,然后返回到“选择状态”,它确实会验证并允许提交表单。
请注意,在此图中,状态字段为 red 无效,而表单 Update button 处于非活动状态,因为表单中的所有字段均无效。
我添加的模糊功能
我进一步验证并添加了模糊功能。这样,当用户离开输入字段时,我可以立即检查他们是否输入了可接受的内容。只是为了让您了解这里的外观是当您离开combobox 进行状态选择时调用的模糊函数。
stateValidate(ErrorTitle, ErrorMessage) {
if (this.profileForm.get('state_address').status == VALID) {
this.toastSuccess("State Entered", "State entered correctly");
} else {
this.toastWarning(ErrorTitle, ErrorMessage);
}
}
如果此输入字段无效,则会出现提示用户正确填写的提示。您可以使用相同的方法来检查输入字段的值,并确保在我的情况下它不是Select State。