内にMdInclude
をネストしようとしています。つまり、特定のボタン/値を選択すると、その特定のボタンに関連付けられた追加入力フィールドがあります。たとえば、MdRadioButton内のMdInputは、フォーム内の値を更新しません
Shipping
O - Same Address
X - Different Address ...........
私はかなり一般的なケースです。
次のように私はそれについて移動しようとした方法がある:
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は周りとのおもちゃに、です):
<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>
、ここでは、関連するスクリプトがあります。フォームは機能しているようですが、送信時にaddress
の値は含まれていません(「別のアドレス」を選択したと仮定します)。 this.form.controls
の検査では、disabled
がまだtrue
に設定されていることがわかりました。これはおそらく値が存在しないためです。
しかし、私は明示的に上記のイベントハンドラでそのコントロールを有効にしました。ここで何が欠けていますか?
私はあなたの質問がうまくいけば、それが無効になっていてもコントロールの価値を得ようとしています。そうですか?その場合は、 'form.value'の代わりに' form.getRawValue() 'を使用してください。 – developer033
実際には、コントロールは有効になっています。 –