【发布时间】:2021-02-22 14:04:22
【问题描述】:
我想重用单个组件来动态生成表单输入字段并想出了这段代码
form-field.component.html
<label *ngIf="formLabel">{{formLabel}}</label>
<input
type="text"
class="form-control"
[formControlName]="formFieldName"
[ngClass]="{
'is-invalid': formField.dirty && formField.errors
}"
[placeholder]="placeholder"
/>
<div
*ngIf="formField.dirty && formField.errors"
class="invalid-feedback"
>
<span *ngIf="formField.errors.required">
{{requiredMessage}}
</span>
<div *ngIf="formField.errors.pattern">
<span *ngFor="let message of patternErrorMessages">
{{message}}
</span>
</div>
</div>
form-field.component.ts
@Input() formField: AbstractControl;
@Input() patternErrorMessages: string[];
@Input() formLabel: string;
@Input() formFieldName: string;
@Input() placeholder: string;
@Input() form: FormGroup;
requiredMessage = FORM_REQUIRED;
constructor() { }
ngOnInit(): void {
this.patternErrorMessages = this.patternErrorMessages.length === 0 ? ['Pattern Mismatch'] : this.patternErrorMessages;
}
父组件.html
<form (ngSubmit)="validSubmit(myFormGroup)" [formGroup]="myFormGroup">
<div class="form-group">
<app-form-field
[formField]="myFormGroup.controls.name"
[patternErrorMessages]="['Only Alphabets and Numbers are allowed.']"
[formLabel]="'Name'"
[placeholder]="'Enter Name'"
[form]="myFormGroup"
>
</app-form-field>
</div>
</form>
我在调用它时遇到了这个错误。
ERROR Error: formControlName must be used with a parent formGroup directive. You'll want to add a formGroup
directive and pass it an existing FormGroup instance (you can create one in your class).
【问题讨论】:
标签: javascript angular forms