【问题标题】:angular trigger form submit using anchor link使用锚链接提交角度触发器表单
【发布时间】:2020-05-18 23:51:10
【问题描述】:

我正在尝试使用模板本身内部的锚标记触发表单提交。它不像按钮控件那样工作。你能建议怎么做吗?

<!-- main app container -->
<div class="jumbotron">
<div class="container">
    <div class="row">
        <div class="col-md-8 offset-md-2">
            <h3>Angular 6 Template-Driven Form Validation</h3>
            <form name="form" (ngSubmit)="f.form.valid && onSubmit()" #f="ngForm" novalidate>
                <div class="form-group">
                    <label for="firstName">First Name</label>
                    <input type="text" class="form-control" name="firstName" [(ngModel)]="model.firstName" #firstName="ngModel" [ngClass]="{ 'is-invalid': f.submitted && firstName.invalid }" required />
                    <div *ngIf="f.submitted && firstName.invalid" class="invalid-feedback">
                        <div *ngIf="firstName.errors.required">First Name is required</div>
                    </div>
                </div>


                <div class="form-group">
                    <a class="btn btn-primary" (click)="f.ngSubmit.emit()">Link Submit </a>
                    <button  class="ml-2 btn btn-primary" >Button Submit</button>
                </div>
            </form>
        </div>
    </div>
</div>

这是 stackblitz 编辑器链接,https://stackblitz.com/edit/angular-6-template-driven-form-validation-qn6zal?file=app%2Fapp.component.html

谢谢

【问题讨论】:

    标签: angular forms validation angular9


    【解决方案1】:

    您可以使用表单的onSubmit method,但它不会级联正确的$event,但您似乎不需要它。另一种选择是使用f.ngSubmit.emit(),它做同样的事情。

    <a class="btn btn-primary" (click)="f.onSubmit()">Link Submit</a>
    

    f 指的是你的表单的模板引用变量,就像你的 stackblitz 中一样:

    <form name="form" #f="ngForm">
    

    【讨论】:

    • 感谢@robin 的回答,onSubmit() 有效,但 ngSubmit.emit() 无效。
    • 用这个更新了 stackblitz 代码。 stackblitz.com/edit/… 显示差异。仍然 emit() 可能是比 onSubmit() 更有意义的解决方案,但想知道它是如何以相反的方式工作的。
    • 奇怪!您与 f.ngSubmit.emit() 的 stackblitz 在您原来的 stackblitz 中为我工作(但最初它没有),并且两个按钮在您在上一条评论中发送的 stackblitz 中为我工作。也就是说它们都显示相同的警报消息,是不是还有什么不工作的?
    • 哦,这太令人惊讶了!我在 IE Edge 中检查了相同的链接,它在那里工作,但 chrome 没有。您检查了哪个浏览器?
    • 我也使用 Chrome :s 我没有检查控制台是否有错误,有一次 f.ngSubmit.emit() 不起作用。你有没有,也许正在打印一些东西?
    猜你喜欢
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 2018-09-15
    相关资源
    最近更新 更多