import {
ChangeDetectionStrategy,
Component,
ElementRef,
output,
viewChild,
ViewEncapsulation,
} from "@angular/core";
@Component({
selector: "sd-form",
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None,
standalone: true,
imports: [],
template: `
`,
})
export class SdForm {
formElRef = viewChild.required>("formEl", {
read: ElementRef,
});
get formEl() {
return this.formElRef().nativeElement;
}
formSubmit = output();
formInvalid = output();
requestSubmit() {
this.formEl.requestSubmit();
}
handleSubmit(event: SubmitEvent) {
event.preventDefault();
event.stopPropagation();
if (this.formEl.checkValidity()) {
this.formSubmit.emit(event);
return;
}
// 자동 메시지 및 포커싱
this.formEl.reportValidity();
this.formInvalid.emit();
}
}