【问题标题】:How to use Angular - post form data to rest api如何使用Angular - 将表单数据发布到rest api
【发布时间】:2018-05-21 14:16:53
【问题描述】:

如何将表单数据发布到外部 rest API?

目前我有一个 HTML 表单:

<ion-content padding>
  <ion-grid fixed>
    <ion-row justify-content-center align-items-center nowrap>
      <ion-col col-auto>
        <h2 text-capitalize>quick order</h2>
      </ion-col>
    </ion-row>
    <ion-row>
      <ion-col>
        <form #formQuickOrder="ngForm">
          <ion-list>
            <ion-item *ngFor="let inputElem of templateData">
            <!-- <ng-container *ngFor="let inputElem of templateData"> -->
              <ion-label color="primary" floating>
                <ion-icon name="{{inputElem.icon}}"></ion-icon>
                <ion-note text-capitalize>{{inputElem.label}}</ion-note>
              </ion-label>

              <ion-input *ngIf="inputElem.name == 'name' else F" #input (ionBlur)="onInputBlur(input)" [type]="inputElem.type" name="inputElem.name" [(ngModel)]="inputElem.model" ngModel required minLength="3" maxLength="50"></ion-input>
              <ng-template #F><ion-input #input (ionBlur)="onInputBlur(input)" [type]="inputElem.type" name="inputElem.name" [(ngModel)]="inputElem.model" ngModel required></ion-input></ng-template>
              <!-- <span *ngIf="!input.ngControl.valid && isSentOrderClicked">{{input.getNativeElement().children[0].validationMessage}}</span> -->
            <!-- </ng-container> -->
            </ion-item>
          </ion-list> 
        </form>
      </ion-col>
    </ion-row>
  </ion-grid>
  <div class="btn-holder">
    <button (click)="onOrder()" class="btn-order-now" ion-button color="dark" outline round>order now</button>
  </div>
</ion-content>

然后我就有了在我的 component.ts 文件中处理提交的函数:

onOrder(formQuickOrder: NgForm) {
    console.log(formQuickOrder)

    //this.http.post('http://xxx/externalapi/add', formQuickOrder);
}

但是如何将表单数据发布到我的外部 API?用角度发送表单数据的标准是什么?它只是一个使用表单数据作为 queryParams 的简单发布请求,还是将其转换为 JSON 是标准的。我可以修改 API 以处理发送的任何数据,所以这不是问题。

【问题讨论】:

    标签: angular ionic-framework


    【解决方案1】:

    您可以使用 angular HttpClient 并使用它的 POST 方法将数据发送到后台。

    import { HttpClient } from '@angular/common/http';
    
    constructor(private http: HttpClient) { }
    
    pubic onOrder(formQuickOrder: NgForm): void {
        this.postData(pass your form value here);
    }
    
    priavte postData (formData: any): Observable<any> {
      return this.http.post<any>(this.yourUrl, formData);
    }
    

    【讨论】:

    • 控制台日志(formQuickOrder)的输出是什么?
    • 检查html一个
    • 您可以使用 formQuickOrder.value 获取表单的值,对吗?然后您可以直接将该数据传递给 http.post 方法。发布表单数据时会发生什么?
    • 用您所遇到的错误更新您的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    相关资源
    最近更新 更多