Angular 角度7-ngForm,ngSubmit-提交旧值

Angular 角度7-ngForm,ngSubmit-提交旧值,angular,angular7,Angular,Angular7,我在Angular 7中使用表单,如下所示 <form #payForm="ngForm" (ngSubmit)="onSubmit(payForm, $event)" method="POST" action="POST URL HERE"> <input type="hidden" name="requestParameter" [value]="stringToSend" /> <div class="text-center">

我在Angular 7中使用表单,如下所示

<form #payForm="ngForm" (ngSubmit)="onSubmit(payForm, $event)" method="POST" action="POST URL HERE">
      <input type="hidden" name="requestParameter" [value]="stringToSend" />
      <div class="text-center">
        <input type="submit" class="btn blbtn text-uppercase px-5 py-2 rounded my-3" value="Pay Now">
      </div>
      <div class="text-center">
        <a [routerLink]="['/logout']" class="onerem ltbl-link w-auto d-inline-block">Cancel</a>
      </div>
</form>
但是,当我提交此表单时,
stringToSend
的最后一个值作为表单数据随表单一起发送,而不是我在
onSubmit()函数中计算的最新值

在设置最新的值之前,我安慰它,它显示的很好,但在表单中,最后一个值是提交,这是我的问题。我也试过
[(ngModel)]
,但还是没有成功

感谢您的帮助

谢谢,
Rohit

不获取最新值的原因是角度绑定的工作方式。
input
元素绑定到
stringToSend
变量,但是在angular有机会更新到实际DOM节点的绑定之前,表单被提交。解决此问题的一种方法是在下一个事件循环周期中延迟
表单
过帐(例如,使用
设置超时

然而,上述解决方案将是一种解决问题的黑客方法。理想情况下,表单提交应该委托给服务


有关处理
表单
控件时的一些最佳做法,请参阅。

我搜索了changeDetectorRef,并在构造函数中创建了引用,与ref.detectChanges()一样使用,但我不知道它是如何运作的,因为我的问题没有解决。你能为同样的问题创建回购协议吗。代码非常长……而且它是机密的,这就是为什么我试图提供我所面临的确切问题…@Pankaj你以前遇到过这种问题吗?
onSubmit(form: any, clkEvent: any): void {

// some database inserts before form submit
stringToSend = newCalculatedValue;   // setting stringToSend to new calculated value

clkEvent.target.submit();   // actual form submit from controller

}
onSubmit(form: any, clkEvent: any): void {

    // some database inserts before form submit
    stringToSend = newCalculatedValue;   // setting stringToSend to new calculated value
    setTimeout(()=>{
       clkEvent.target.submit();   // actual form submit from controller
    } , 0);
}