【问题标题】:How to close modal after form submit event in Angular2?如何在Angular2中的表单提交事件后关闭模式?
【发布时间】:2017-12-09 22:52:28
【问题描述】:

我想在表单提交事件完成后关闭模式。我做了以下事情:

<form [formGroup]="alertForm" novalidate (ngSubmit)="save(alertForm.value, alertForm.valid)">
    <div class="row" style="padding-left: 20px; padding-right: 20px;">
      <div class="input-field">
        <div class="form-group input-field">
          <label for="recipientLogin">Available Recipient</label>
          <textarea class="form-control validate" id="recipientLogin" required formControlName="recipientLogin"> </textarea>
        </div>
      </div>

      <div class="input-field">
        <div class="form-group input-field">
          <select class="form-control" id="alert_level" formControlName="alert_level">
            <option  value="0" selected> Emergency </option>
            <option value="1">Major</option>
            <option value="2">Minor</option>
            <option value="3">Information</option>
          </select>
        </div>
      </div>

      <div class="input-field">
        <div class="form-group input-field">
          <label for="subject">Subject</label>
          <input type="text" class="form-control validate" id="subject" required formControlName="subject">
        </div>
      </div>

      <div class="input-field">
        <div class="form-group input-field">
          <label for="message">Message</label>
          <textarea class="form-control validate" id="message" required formControlName="message"> </textarea>
        </div>
      </div>

      <div class="input-field">
        <div class="form-group input-field">
          <input type="file" class="form-control" id="media1" />
          <input type="file" class="form-control" id="media2" />
          <input type="file" class="form-control" id="media3" />
        </div>
      </div>
    </div>

    <div>
      <div class="col s6">
        <div style="padding-left: 20px; padding-right: 20px;">
          <button type="submit" class="btn btn-default input-field">Send</button>
        </div>
      </div>
      <div class="col s6 right-align">
        <div style="padding-left: 20px; padding-right: 20px;">
          <button type="submit" data-dismiss="modal" class="btn btn-default input-field">Close</button>
        </div>
      </div>
    </div>
  </form>

这会在表单提交时触发 save(),但不会关闭模式,因为我在保存按钮上尝试了 data-dismiss="modal",这会阻止 save() 调用并关闭模式。 我想在关闭模式之后先完成 save()。

【问题讨论】:

标签: html typescript modal-dialog bootstrap-modal angular2-forms


【解决方案1】:

假设表单在 bootstrap modal 内,您可以使用 $('#modalID').modal("hide") 关闭模态框。

完整参考请查看here

【讨论】:

  • 我也试过了,但是因为我使用的是 angular2,它无法识别 $ 命令。
  • 这个想法是一样的,但你需要以角度方式引用模态。在您的模板中将您的模态使用模板引用引用为 - #modal 并在您的组件中添加 - @ViewChild('modal') modal : ElementRef;然后在保存成功后添加 - this.modal.hide();
  • 如果您可以添加 plunkr 链接,我们将更容易帮助您
  • 我尝试了 modal.hide(),它关闭了我的两个模态,之后我无法访问我的网页(我想通过第一个模态关闭第二个模态打开)。在几秒钟内,我正在渲染我创建的表单组件。所以 modal 是从另一个组件打开的,并希望从另一个组件关闭它。
【解决方案2】:

或者,在保存调用成功后,您可以通过“关闭”按钮关闭模式。

&lt;button #btnId type="submit" /&gt;

你的组件可以通过 this.btnId.click() 关闭

【讨论】:

  • 我想要在发送按钮的 onClick 上执行两个任务:1) 调用 save() 2) 关闭模式
猜你喜欢
  • 2018-04-16
  • 2018-08-20
  • 2012-08-14
  • 1970-01-01
  • 2018-07-15
  • 2014-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多