Angular2:嵌套窗体的无值访问器
我创建了一个带有嵌套表单组的表单:Angular2:嵌套窗体的无值访问器,angular,Angular,我创建了一个带有嵌套表单组的表单: this.cardForm = this.fb.group({ number: ['', Validators.compose([Validators.required, this.validateCardNumber])], holderName: ['', Validators.required], expiry: this.fb.group({ expirationMonth: ['', Validators.requ
this.cardForm = this.fb.group({
number: ['', Validators.compose([Validators.required, this.validateCardNumber])],
holderName: ['', Validators.required],
expiry: this.fb.group({
expirationMonth: ['', Validators.required],
expirationYear: ['', Validators.required],
}, this.validateCardExpiry),
cvc: ['', Validators.required]
});
进入我的模板:
<form [formGroup]="cardForm" novalidate="novalidate" (ngSubmit)="onSave()">
<div class="form-group" formGroupName="expiry">
<label for="expirationmonth">Expiration month</label>
<select2 id="default-select"
name="expirationmonth"
formControlName="expirationMonth"
[data]="months$ | async"
[width]="250"
[options]="select2Options">
</select2>
<label for="expirationyear">Expiration year</label>
<select2 id="default-select2"
name="expirationyear"
formControlName="expirationYear"
[data]="years$ | async"
[width]="250"
[options]="select2Options">
</select2>
</div>
</form>
select2是来自的组件
Angular向我传达了以下信息:
错误:路径为“Expiration->expirationMonth”的表单控件没有值访问器
尝试将ngControlDefault添加到您的应用程序
这似乎是表单的一个问题,根据 因此,您目前必须对此进行一些变通。根据对该问题的最后评论,您可以尝试已采取的措施: 我花了一些时间来研究如何使用反应形式。我所要做的就是实现ControlValueAccessor,并在select/unselect上从ngAfterViewInit传播更改 在处理代码时,我发现的另一个解决方法是在selects上使用ngDefaultControl
<select2 ngDefaultControl ..... ></select2>
要修补其中一个值的组件:
changede{//e在这里是基元类型
此.cardForm.controls['expiration'].controls['expirationMonth'].patchValuee
}
大家好,我们一直在研究这个话题,我给出了一个正确的答案,您可以在这里查看:
<select2 ngDefaultControl ..... ></select2>
(valueChanged)="changed($event)"