Angular 2/4:nativeElement.submit() 不在 Firefox 中提交表单,但在 chrome 中有效

Posted

技术标签:

【中文标题】Angular 2/4:nativeElement.submit() 不在 Firefox 中提交表单,但在 chrome 中有效【英文标题】:Angular 2/4 : nativeElement.submit() does not submit form in Firefox, but works in chrome 【发布时间】:2018-10-09 06:09:50 【问题描述】:

我通过旧式 POST 方法(非 ajax)从我的页面向外部站点提交表单。我参考的表格是在 chrome 中提交的,而不是在 Firefox 中提交的。 nativeElement 是否存在浏览器兼容性问题?

html 格式:

    <form [formGroup]="form" #gatewayFormElement *ngIf='form' action="abcpage" (submit)="onSubmit($event)" method="POST" ngNoForm  >
    .........
            <button [formGroup]="form" type="submit">
                 'Connect to Suntech' | translate 
            </button>
   </form>

我的组件

export class EsafeComponent extends GatewayBaseClass implements OnInit 

@ViewChild('gatewayFormElement') private gatewayFormElement:ElementRef;
 ...............
onSubmit(event: Event) 
    this.gatewayFormElement.nativeElement.submit();

在 chrome 中发布到其他页面,但不是在 Firefox 中。我尝试了 2、3 个不同版本的 firefox。

感谢任何帮助,谢谢!

【问题讨论】:

【参考方案1】:

如果您想使用按钮提交表单,则不需要 ViewChild

<form #gatewayFormElement [formGroup]="form" *ngIf='form'
          action="http://wwww.abcpage" method="POST">
   ...
   <!-- not put [formGroup]="form" in the button -->
   <button type="submit">
           'Connect to Suntech' | translate 
   </button>
   <!--you can use a button type button too-->
   <button type="button" (click)="gatewayFormElement.submit()>
          'Connect to Suntech' | translate 
   </button>

【讨论】:

我的问题中的按钮类型为“提交”。请再次检查。谢谢

以上是关于Angular 2/4:nativeElement.submit() 不在 Firefox 中提交表单,但在 chrome 中有效的主要内容,如果未能解决你的问题,请参考以下文章

Angular nativeElement.scrollTop 有奇怪的行为

Angular2 测试:ComponentFixture 中的 DebugElement 和 NativeElement 对象有啥区别?

Angular 混合应用程序测试“无法读取 null 的属性‘nativeElement’”

nativeElement.click() 和事件处理程序的点击有啥区别?

获取 Angular 组件的滚动位置

Angular 7:单击外部时关闭菜单