Angular 角度7-ngForm,ngSubmit-提交旧值
我在Angular 7中使用表单,如下所示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">
<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);
}