HTML
<form [formGroup]="form">
<input type="text" formControlName="name" class="form-control" />
<div *errorFeedback name="name" class="error-feedback"></div>
</form>
Директива формы.
@Directive({
selector: 'form'
})
export class FormGroupErrorDirective implements OnInit, AfterContentChecked {
@ContentChildren(ErrorFeedbackDirective) errorFeedbackDirectives: QueryList<ErrorFeedbackDirective>;
ngAfterContentChecked(): void {
this.errorFeedbackDirectives.forEach(dir => {
// ???? How can I get this.formGroup ???
dir.formControl = this.formGroup.get(dir.formControlName);
});
}
}
* Директива errorFeedback
// tslint:disable:directive-selector
@Directive({
selector: '[errorFeedback]',
})
export class ErrorFeedbackDirective implements OnInit {
// tslint:disable:no-input-rename
@Input('errorFeedback')
name: string;
formControl!: FormControl;
constructor(private el: ElementRef,
private templateRef: TemplateRef<any>,
private viewContainer: ViewContainerRef) { }
ngOnInit() {
}
}
Как получить доступ к экземпляру директивы FormGroup
изв FormGroupErrorDirective
?
То, что я пытаюсь сделать здесь, это передать экземпляр FormControl директиве *errorFeedback
.Затем я буду использовать его для наблюдения за изменениями статуса и ошибками.
Или есть ли лучший способ получить доступ к экземпляру FormControl внутри *errorFeedback
?