在Angular4中提交隐藏的表单

时间:2017-12-01 13:47:42

标签: forms angular http cors hidden

为了克服我提交常规HTTP请求时面临的CORS(交叉源请求共享)问题,我需要在Angular 4中提交一个隐藏的表单。我在HTML中做到了没有问题。但是,我不知道如何在Angular中做到这一点。 这是我在组件的html中的代码:

  <form form #f="ngForm" action="https://whatever.site.I_access" method="get">
   <input type="hidden" name="scope" value="openid email">
   <input type="hidden" name="response_type" value="id_token token">
   <input type="hidden" name="client_id" value="myClientId">
   <input type="hidden" name="redirect_uri" value="https://my.redirect.com/">
   <input type="hidden" name="nonce" value="aNonceValue"> 

   <button type="submit" (click)="f.submit()">Submit</button>
 </form>

在我的.ts文件中,我实现了功能&#34;提交&#34;。将其留空,表单不会提交。在此函数中编写的命令是什么,只是为了使用指定的操作提交表单?

 onSubmit(){
 console.log("form submitted");
 }

任何线索?

1 个答案:

答案 0 :(得分:2)

只要表单附加到文档中,它就应该起作用:

  <form #form ngNoForm action="https://whatever.site.I_access" method="get">
   <input type="hidden" name="scope" value="openid email">
   <input type="hidden" name="response_type" value="id_token token">
   <input type="hidden" name="client_id" value="myClientId">
   <input type="hidden" name="redirect_uri" value="https://my.redirect.com/">
   <input type="hidden" name="nonce" value="aNonceValue"> 

   <button type="submit">Submit</button>
 </form>

这将使angular忽略表单,因此它将是一个纯HTML表单。该按钮将触发其提交。

要以编程方式提交表单,请在组件上获取表单。下面form指的是#form以上。 nativeElement是指HTMLFormElement

 import { ..., ElementRef } from '@angular/core';
 ...
 @ViewChild('form') form: ElementRef;
 ...
 submitForm() {
   this.form.nativeElement.submit();
 }

然后在需要时拨打submitForm()