我正在尝试将一个嵌套在一个MdInclude
内部MdRadioButton
,也就是说,如果我选择一个特定的按钮/值,则会启用一个额外的输入字段(与该特定按钮相关联),例如
Shipping
O - Same Address
X - Different Address ...........
对我来说这是一个很常见的情况。
我尝试的方法如下:
<form role="form" [formGroup]="form" (ngSubmit)="submit()">
<md-radio-group formControlName="shipping" (change)="shippingChange($event)">
<md-radio-button value="same">Current Address</md-radio-button>
<md-radio-button value="different">
<span>Different Address:</span>
<md-input-container>
<input mdInput placeholder="Address" formControlName="address">
</md-input-container>
</md-radio-button>
</md-radio-group>
<button md-raised-button type="submit">OK</button>
<h4>Shipping: {{shipping}}</h4>
<h4>Address: {{address}}</h4>
</form>
这是相关的脚本:
public ngOnInit() {
this.form = this.formBuilder.group({
shipping: 'same',
address: { value: '', disabled: true }
});
}
public shippingChange($event) {
if ($event.value === 'different') {
this.form.get('address').enable();
} else {
this.form.get('address').disable();
}
}
public submit() {
if (this.form.valid) {
this.shipping = this.form.value.shipping;
this.address = this.form.value.address;
}
}
(这是一个plnkr,用来玩弄)。该表单似乎正在工作,但在提交时address
不包括值(假设我选择了“不同地址”)。在检查时this.form.controls
我注意到它disabled
仍然设置为true
,这可能是该值不存在的原因。
但是,我在上面的事件处理程序中明确启用了该控件,那么我在这里缺少什么?