带有 Action 的 Angular 5 简单表单不起作用

Posted

技术标签:

【中文标题】带有 Action 的 Angular 5 简单表单不起作用【英文标题】:Angular 5 simple form with Action is not working 【发布时间】:2018-10-25 05:13:55 【问题描述】:

下面给出的代码在我的 angular html 文件中不起作用,但如果我在 html 文件中单独使用此代码,它可以工作,我不知道我做错了什么,这只是一个简单的形式。

<form action='https://easypaystg.easypaisa.com.pk/easypay/Index.jsf' method='post'>
    <input  name='storeId' value='4950'>
    <input  name='amount' value='1000'>
    <input  name='postBackURL' value='https://easypaystg.easypaisa.com.pk/easypay/Confirm.jsf'>
    <input  name='orderRefNum' value='123113'>
    <input  name='merchantHashedReq' value='6ohsP8x3PpiaI4oNirWGwjVkyMLP4CbzcH6pZwvu9SViOzx9nLxyR/TtJhwFrxBU686Wf1z22G+TBxuo5QkSscuXp266qQWx8AbGWnLXxG79LHt+5VlD+lH2JkjKO997adwVHH6mGNm8ldtAKkRyf/E92QF5PwhWMjq8i4dlbABIjJxnwPS3x13R/Nbfmlugkz7XpX20DmZ0IhPuGBR95sOpDATIjfW51fuStCVVni4='>
    <input  name='autoRedirect' value='0'>
    <input  name='paymentMethod' value='CC_PAYMENT_METHOD'>
    <input  name='emailAddr' value='johndoe@live.com'>
    <input  name='mobileNum' value='0123455500'>
    <button type="submit" class="btn btn-success" >Submit</button>
    <input type='submit' value='asdasd' class="btn">
</form>

【问题讨论】:

您使用的是哪个版本的 Angular? 我的 Angular 5 和 cli 1.6 这能回答你的问题吗? Angular 5 default form submit 这能回答你的问题吗? Can't submit HTML form inside Angular 2 application 【参考方案1】:

您可以通过以下方式进行:

<form #form action='https://easypaystg.easypaisa.com.pk/easypay/Index.jsf' method='post'>
    ...
    <button type="submit" class="btn btn-success" (click)="form.submit()">Submit</button>
    ...
</form>

【讨论】:

@HaroonAslam 太好了,在这种情况下你可以接受答案:) 我会在 8 分钟内完成 表单正在提交但没有值 @DhireshBudhiraja 确保您的输入具有name 属性。你可以分享 stackblitz,我会检查的。 这在 Angular 10 中不起作用,并且会在控制台中产生 javascript 错误。【参考方案2】:

直接发布表单会导致页面重新加载,这通常不是您在 Angular 应用程序 (SPA) 中想要的。从表单中获取数据,然后将 HTTP 请求从您的代码发送到服务器。

您应该利用 NgSubmit 指令,如 here 所述

【讨论】:

是的,但在某些情况下您不希望出现 CORS 错误【参考方案3】:

使用ngNoForm 属性as documented。这将阻止所有“神奇”的 Angular 行为,并且您将能够以本机方式提交表单(页面重新加载)。

所以类似于:

<form ngNoForm action='https://easypaystg.easypaisa.com.pk/easypay/Index.jsf' method='post'>
    <input  name='storeId' value='4950'>
    ...
    <input type='submit' value='asdasd' class="btn">
</form>

【讨论】:

以上是关于带有 Action 的 Angular 5 简单表单不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Angular JS,带有选择框的过滤表

带有 HttpHeaders 的 Angular 5 JSONP 请求

Angular.Js 性能、大型数据集、ng-repeat、带有过滤器和双向绑定的 html 表

在 Angular 的材料表中单击按钮上的方法将 ID 发送到方法

Angular - 带有材料表和数据行的 FormArray 不正确

带有 Angular JS 的 mySQL 数据库的用户登录系统?