【发布时间】:2018-12-14 16:32:42
【问题描述】:
我正在使用响应式表单,但我似乎对看似随机的表单字段有疑问。任何关于为什么会发生这种情况的想法都是值得考虑的。
如果有帮助,我刚刚开始使用 angular 和 material 7
有趣的是,在表单中添加和删除元素会导致其他元素出现问题。
ERROR 错误:没有未指定名称的表单控件的值访问器 属性
TS
export class VolunteerApplicationPersonalStepComponent implements OnInit
{
public readonly form: FormGroup;
constructor(private fb: FormBuilder) {
this.form = this.fb.group({
businessTelephoneExt: [''],
otherTelephone: [''],
otherTelephoneExt: [''],
});
}
}
HTML
<form [formGroup]="form">
<mat-form-field>
<input matInput i18n-placeholder placeholder="Business Extension"
[formControl]="form.get('businessTelephoneExt')">
</mat-form-field>
<app-telephone-input i18n-placeholder placeholder="Other Telephone"
[formControl]="form.get('otherTelephone')">
</app-telephone-input>
<mat-form-field>
<input matInput i18n-placeholder placeholder="Other Extension"
[formControl]="form.get('otherTelephoneExt')">
</mat-form-field>
<br>
<div class="group-margin group-min-width">
<button mat-stroked-button color="primary" matStepperPrevious i18n>Previous</button>
<button mat-raised-button color="primary" matStepperNext (click)="next()" i18n>Next</button>
</div>
</form>
正如有人建议的那样 .. formControlName="businessTelephoneExt"
App-Telephone 代码(注意它曾经有 formControl 而不是 appFormControl)
export class TelephoneInputComponent implements OnInit {
@Input() public required = false;
@Input() public placeholder = '';
@Input() public appFormControl: NgControl;
constructor() {
}
public ngOnInit() {
}
}
<mat-form-field>
<input
matInput
type="tel"
[required]="required"
[placeholder]="placeholder"
[formControl]="appFormControl">
<mat-hint i18n>Please enter digits only</mat-hint>
<mat-error
*ngIf="appFormControl.hasError('phone')"
i18n>Invalid phone (requires 10 digits)
</mat-error>
</mat-form-field>
【问题讨论】:
-
你试过
formControlName="businessTelephoneExt"? -
没有区别
-
您是否尝试注释掉您的
app-telephone-input自定义控件,以确保它不会成为问题? -
似乎是自定义组件导致了它
-
已重命名为 appFormControl,现在可以了...与组件命名约定有什么关系?
标签: angular angular-material angular7