使用异步数据加载将选项设置为在 Angular2 中选择
Set option as selected in Angular2 with asynchronous data loading
我有一个表格来更新客户对象。
我有一个select客户类型,我想在获取客户数据时预select当前值。
我该怎么做?
这是我的 html 表格的一部分:
<div class="form-group">
<label for="type" class="req">Type</label>
<select class="form-control" ngControl="type">
<option *ngFor="#p of typecustomerlist" [value]="p.code">{{p.label}}</option>
</select>
<div [hidden]="type.valid" class="alert alert-danger">
Please select a type
</div>
</div>
<div class="form-group">
<label for="lastname" class="req">Last name</label>
<input type="text" ngControl="lastname" value="{{customer.Lastname}}" />
<div *ngIf="lastname.dirty && !lastname.valid" class="alert alert-danger">
<p *ngIf="lastname.errors.required">Lastname is required.</p>
</div>
</div>
我找到了解决方案。我在我的组件 ngOnInit()
方法中添加了这个:this.type.updateValue(this.customer.type);
我的组件:
export class UpdateCustomerComponent implements OnInit {
myCustomerForm: ControlGroup;
lastname: Control;
type: Control;
constructor(routeParam: RouteParams, private dataService: ContactDataService, private builder: FormBuilder) {
this.lastname = new Control('',
Validators.compose([Validators.required])
);
this.type = new Control(this.customer != null ? this.customer.Type : null,
Validators.compose([Validators.required])
);
this.myCustomerForm = builder.group({
lastname: this.lastname,
type: this.type
});
}
ngOnInit() {
this.dataService.get(this.id).subscribe(data => {
this.customer = <ICustomer>JSON.parse(JSON.stringify(data));
this.lastname.updateValue(this.customer.Lastname);
this.type.updateValue(this.customer.Type);
});
}
}
我有一个表格来更新客户对象。
我有一个select客户类型,我想在获取客户数据时预select当前值。 我该怎么做?
这是我的 html 表格的一部分:
<div class="form-group">
<label for="type" class="req">Type</label>
<select class="form-control" ngControl="type">
<option *ngFor="#p of typecustomerlist" [value]="p.code">{{p.label}}</option>
</select>
<div [hidden]="type.valid" class="alert alert-danger">
Please select a type
</div>
</div>
<div class="form-group">
<label for="lastname" class="req">Last name</label>
<input type="text" ngControl="lastname" value="{{customer.Lastname}}" />
<div *ngIf="lastname.dirty && !lastname.valid" class="alert alert-danger">
<p *ngIf="lastname.errors.required">Lastname is required.</p>
</div>
</div>
我找到了解决方案。我在我的组件 ngOnInit()
方法中添加了这个:this.type.updateValue(this.customer.type);
我的组件:
export class UpdateCustomerComponent implements OnInit {
myCustomerForm: ControlGroup;
lastname: Control;
type: Control;
constructor(routeParam: RouteParams, private dataService: ContactDataService, private builder: FormBuilder) {
this.lastname = new Control('',
Validators.compose([Validators.required])
);
this.type = new Control(this.customer != null ? this.customer.Type : null,
Validators.compose([Validators.required])
);
this.myCustomerForm = builder.group({
lastname: this.lastname,
type: this.type
});
}
ngOnInit() {
this.dataService.get(this.id).subscribe(data => {
this.customer = <ICustomer>JSON.parse(JSON.stringify(data));
this.lastname.updateValue(this.customer.Lastname);
this.type.updateValue(this.customer.Type);
});
}
}