【问题标题】:angular2 submit form in typescriptangular2在打字稿中提交表单
【发布时间】:2017-09-17 00:34:17
【问题描述】:

我需要提交来自支付网关的表单。我们的后端人员要求我输入innerHtml 并在渲染后发送。我让它在 Chrome 上运行,但在 Firefox 上失败了。

现在我正在尝试在我们的测试环境中修复它,后端添加了一个 JSON 返回,其中包含我需要复制他发送给我的表单的所有属性,以便我可以制作自己的表单。但仍然无法在 Firefox 上提交。

有人有同样的经历吗?请给我一些启发。

我需要知道任何 Firefox 特定的修复吗?

以下是 Chrome 和 Safari 上的工作代码

import { Component, OnInit, AfterViewInit, ViewChild, ElementRef,DoCheck, ViewChildren, QueryList } from '@angular/core';
import { BrowserModule, DomSanitizer, SafeResourceUrl, SafeUrl} from '@angular/platform-browser';
import { PaymentService } from '../../_services/payment.service';
import { Loader } from '../../_services/loader.service';

@Component({
  selector: 'bdf-payment-form',
  templateUrl: './payment-form.component.html',
  styleUrls: ['./payment-form.component.scss']
})
export class PaymentFormComponent implements OnInit,DoCheck, AfterViewInit  {

  form : SafeResourceUrl;
  // @ViewChild('paymentFormContainer') container: ElementRef;
  @ViewChild('paymentForm') myForm: ElementRef;
  loader;
  constructor(private paymentService:PaymentService,
    private sanitizer: DomSanitizer,
    private loaderService: Loader,
    private elRef:ElementRef) { }
  
  ngDoCheck(){
    
  }
  ngOnInit() {
    console.log(this.paymentService.paymentForm);
    this.paymentService.paymentForm ? this.form = this.sanitizer.bypassSecurityTrustHtml(this.paymentService.paymentForm) : null
    this.loader = true;
  }

  ngAfterViewInit() {
    let test;
    if(this.form){ 
      test = this.elRef.nativeElement.querySelector('form')
      console.log(test)
      test.submit();
    }
    
  }

}

【问题讨论】:

    标签: forms angular firefox typescript cross-browser


    【解决方案1】:

    您不应该使用submit() 方法来避免页面刷新时重定向。

    http服务用于从表单提交序列化为json的表单数据。如果您将表单元素绑定到模型,那么将模型发送回后端会更容易。

    【讨论】:

    • 不过,我可以做到这一点。后端的人说,我们需要通过html表单发送,因为浏览器需要通过url。当浏览器访问包含字段和值的 url 时。它将进入 OTP(一次性密码)页面,然后触发回调并重定向回我们的确认页面。有一个更好的方法吗?感谢@Roman 的回复。
    猜你喜欢
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多