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