【发布时间】:2019-02-24 04:17:48
【问题描述】:
我有一个如下所示的表格。并且具有默认值的区域下拉列表是“ALL”,其他值是从 api 调用中填充的。
<form method="POST" for enctype="multipart/form-data" [formGroup]="unitSearchForm">
<div class="form-group">
<label for="Zone">Zone</label>
<select class="form-control" id="zone" formControlName="zoneId">
<option [ngValue]="0">All</option>
<option [ngValue]="zone.ZoneId" *ngFor="let zone of (_zones|async)?.Result">{{ zone.ZoneName}}</option>
</select>
</div>
<div class="form-group">
<input class="form-control" type="text" id="search" formControlName="unitName"
placeholder="Search by Unit Name" />
</div>
<div class="form-group">
<select class="form-control" formControlName="status">
<option [ngValue]="status.Code" *ngFor="let status of _statusArr">{{status.Name}}</option>
</select>
</div>
<div class="align-self-end form-group">
<button type="submit" class="btn btn-primary" (click)="SearchUnits()"><i
class="fa fa-fw fa-search"></i>Search</button>
</div>
</form>
/*
Component Code
*/
ngOnInit() {
this.InitilizeSearchForm();
this.InitilizeSelectors();
}
private InitilizeSearchForm() {
this.unitSearchForm = this._fb.group({
zoneId: ['0'],
unitName:['',Validators.maxLength(100)],
status:['A']
});
}
private InitilizeSelectors(){
let searchCriteria: IDictionary = {}
this._statusArr=this._dataservice.GetStatus();
this._zones = this._adminService.Getzones(searchCriteria);
searchCriteria["status"] = this.unitSaveForm.get('status').value;
}
如何在区域下拉菜单中选择“全部”?我在初始化表单时尝试设置该值。但它不起作用。总是第一个选择的值什么都不是。
【问题讨论】:
-
[ngValue]="value"表示选项的值实际上是value,而不是转换为字符串的值。这是非常有用的行为,但这意味着表单中的初始值需要是数字0而不是字符串'0',因为'0' !== 0 -
@Vipin 是否有任何区域元素具有 ZoneId = 'All' ?还是需要动态添加?
-
@vadi,我已经有 html 选项“全部”。我不希望将其添加为 rxjs 请求的一部分。当我在表单字段中选择默认值= 0 分配。您可以在我的问题中看到 InitilizeSearchForm 方法。所以我选择 zoneId 为零。但它没有选择下拉菜单中的“全部”选项。
-
@Aluan Haddad 我试过你的建议,当我在 InitilizeSearchForm 中初始化表单时。试图设置 zoneid:0 。但它没有选择“全部”
-
我很惊讶,这应该可行。也许这是一个时间问题。我只是推测,但我不明白您为什么延迟创建表单
标签: angular typescript angular-reactive-forms