twitter-bootstrap - Angular - 在表单提交条件下显示 Bootstrap 模式

标签 twitter-bootstrap angular

我有一个基于模型驱动方法的 Angular 5 表单。我已经验证并填充并进行了 API 调用。一旦 api 调用返回一个值,我就设置一个指示器 truefalse。基于这个返回值,我想显示一个标准模式来指示结果,如果成功则清除表单内容。下面是我的代码:

signup.component.html:

<form [formGroup]="myForm" novalidate (ngSubmit)="register(myForm.value)" id="signUpForm" role="form">
  <div class="row">
    <div class="col-lg-12 col-md-12">
      <div class="form-group">
        <input type="email" formControlName="email" placeholder="Enter Email..." class="form-control" aria-required="true">
      </div>
    </div>
  </div>
</form>
....
<div class="modal fade" [hidden]="!myForm.valid">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title">User Register</h5>
      </div>
      <div class="modal-body">
        <p>Signup done!</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>

在我的 signup.component.ts 中:

export class SignupComponent implements OnInit {

  public myForm: FormGroup;
  public submitted: boolean = false;

  constructor(...
    private formBuilder: FormBuilder) { }

  ngOnInit() {
    this.myForm = this.formBuilder.group({
      email: ['', [<any>Validators.required, <any>Validators.pattern("[^ @]*@[^ @]*")]]
    });
  }

  register(model: User) {
    this.authService.register(model.email)
      .subscribe(
      data => {
        this.submitted = true;
      },
      error => {
        this.submitted = false;
      });
  }

}

所以问题又来了: 1 - 即使值为 true,模态框也不会弹出。 2 - 一旦值变为真,我希望重置表单。

最佳答案

要从您需要声明的组件打开 Bootstrap 模式

declare var $;

外部组件。然后当你想在提交成功后显示模态时,使用ViewChild

import { ElementRef, ViewChild } from '@angular/core';

// ...

@ViewChild('someModal') someModal:ElementRef;

register(model: any) {
  this.submitted = true;
  // ...
  $(this.someModal.nativeElement).modal('show'); 
}

至于从表单中删除值,您可以调用 this.myForm.reset()

StackBlitz

您也可以考虑使用 ng-bootstrap :)

关于twitter-bootstrap - Angular - 在表单提交条件下显示 Bootstrap 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47558949/

相关文章:

ruby-on-rails - 在 Rails 3 中使用 Bootstrap 为 simple_form_for 设置样式文件上传按钮

javascript - 如何使用 bootstrap 3 记住并保持事件的导航选项卡? (如果重要的话,Asp Mvc 5)

javascript - 用于单元测试的假文件放置事件

angular - 将外部 CSS 加载到组件中

html - 使用纯 CSS 滚动到 anchor

javascript - 外部样式未应用于 img 标签

jquery - 按钮和导航在网站的移动版本中关闭

Angular2在ngfor中使用elvis运算符

javascript - *ngFor 不迭代数组

node.js - 观察者在 Angular 2中使用socket.io创建多条消息