Angular 从TypeScript提交表单

Angular 从TypeScript提交表单,angular,Angular,我想从TypeScript提交一份表格。我有一些表单验证指令,用于侦听表单上的提交事件,因此我需要提交表单,而不仅仅是从ngForm的事件发射器发出 constructor(form: NgForm, el: ElementRef) { this.subscription = form.ngSubmit.subscribe(_ => { this.onSubmit(el.nativeElement); }); } 到目前为止,我唯一想到的是点击submit

我想从TypeScript提交一份表格。我有一些表单验证指令,用于侦听表单上的提交事件,因此我需要提交表单,而不仅仅是从ngForm的事件发射器发出

constructor(form: NgForm, el: ElementRef) {
    this.subscription = form.ngSubmit.subscribe(_ => {
        this.onSubmit(el.nativeElement);
    });
}
到目前为止,我唯一想到的是点击submit按钮,但感觉脏兮兮的

(document.querySelector('button[type="submit"]') as HTMLElement).click();

有人对如何提交本机表单元素还有其他建议吗?

不建议在angular应用程序中使用查询。您可以使用
ViewChild
获取表单元素。

为了回答我自己的问题,我更改了focus first无效指令的工作方式。该指令侦听表单上的submit事件,查找任何无效类,然后聚焦第一个类(如果有)

我将指令从侦听submit事件更改为

@HostListener('submit', ['$event'])
onSubmit(event) {
注入ngForm对象并订阅submit事件发射器

constructor(form: NgForm, el: ElementRef) {
    this.subscription = form.ngSubmit.subscribe(_ => {
        this.onSubmit(el.nativeElement);
    });
}

现在,当Angular ngForm对象提交时,该指令将触发,我不需要担心本机DOM事件。

我已经尝试过了,但在本机元素上调用submit会导致表单向服务器完整发回,并重新加载整个应用程序。如果要以异步方式提交表单,可以使用
FormData
api()如果您想手动验证表单,请参阅此处的
NgForm
api