ユーザーが[送信]ボタンをクリックすると、モーダルが自動的に閉じます。
Submit _data-dismiss="modal"
_に_<button>
_を追加すると、submitComments()
は実行されません。
$('#myModal').modal('hide');
のようなことをしようとしましたが、成功しませんでした。
だからどうすればAngular 2?でモーダルを閉じることができますか?ありがとう
_<button type="button" class="btn btn-info" data-toggle="modal" data-target="#myModal">Open Modal</button>
<div id="myModal" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<form (ngSubmit)="submitComments()">
<div class="form-group row">
<label class="form-control-label col-sm-2">Comments:</label>
<div class="col-sm-10">
<textarea class="form-control" rows="3"></textarea>
</div>
</div>
<div class="form-group row">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">Submit</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
_
。
_submitComments() {
// I want to do something like $('#myModal').modal('hide'); here.
}
_
@MattScarpinoの答えとは別に、ボタンの種類をbutton
からsubmit
に変更し、関数submitComments()
を呼び出して同時にdismiss-modal
。そうすることで、モーダルを解除し、同時に関数を呼び出すこともできます。ここに例があります:
<button type="button" class="btn btn-info" data-toggle="modal" data-target="#myModal">Open Modal</button>
<div id="myModal" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<form>
<div class="form-group row">
<label class="form-control-label col-sm-2">Comments:</label>
<div class="col-sm-10">
<textarea class="form-control" rows="3"></textarea>
</div>
</div>
<div class="form-group row">
<div class="col-sm-offset-2 col-sm-10">
<button type="button" (click)='submitComments()' data-dismiss="myModal" class="btn btn-default">Submit</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
コントローラー側からモーダルを閉じたい場合は、この方法を使用できます
$("#myModal").modal("hide");
これを行うには、Angular2コントローラー内の任意の型でjQuery変数を宣言するだけです。
declare var jQuery:any;
これをimportステートメントの直後、コンポーネントデコレータの前に追加します。
次に、bootstrap=このIDのモーダルにアクセスします。
jQuery("#myModal").modal("hide");
_@ViewChild
_を使用する
_#closeBtn
_を使用して要素に_data-dismiss="modal"
_を追加します
_<a><i class="fa fa-close" data-dismiss="modal" #closeBtn></i></a>
_
_<div class="modal fade" id="yourModalId">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<a><i class="fa fa-close" data-dismiss="modal" #closeBtn></i></a>
</div>
<div class="modal-body">
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
_
this.closeBtn.nativeElement.click();
を使用してクリックイベントをトリガーすると、モーダルが閉じます。
_import {ViewChild, ElementRef} from '@angular/core';
@Component({
moduleId: ...,
selector: '.',
templateUrl: '.',
styleUrls: ['.']
})
export class yourClass {
@ViewChild('closeBtn') closeBtn: ElementRef;
yourFunction() {
//do something
...
...
//close your modal
this.closeModal();
}
//call this wherever you want to close modal
private closeModal(): void {
this.closeBtn.nativeElement.click();
}
}
_
最初に、divのhidden
プロパティを変数に設定します:
_<div id="myModal" [hidden]="hideModal" class="modal fade">
_
次に、クラスでhideModal
という名前のブール値を定義し、falseに設定します。
_hideModal: boolean = false;
_
3番目に、submitComments()
で、hideModal
をtrueに設定します。
この宇宙における完璧な答え.........................
ステップ1:モーダルの[閉じる]ボタンに一意のIDを与える
ステップ2:フォームの送信またはタスクの呼び出しが正常に完了した後
document.getElementById("addProductCloseButton").click();
あなたのクラスで
私は答えの1つを使用し、いくつかの編集で私のために完璧に作業します
<button hidden="hidden" class="fa fa-close" data-dismiss="modal" id="closeBtn" #closeBtn (click)="yourModal.close()"></button>
<div style="margin-top: 0px !important;">
<button type="button" id="openModal" #openModal class="btn btn-fab-mini btn-outline-primary" style="float:right" (click)="yourModal.open()"><strong>click here to open modal</strong></button>
<modal #yourModal>
<ng-template #modalHeader>
<button hidden="hidden" class="fa fa-close" data-dismiss="modal" id="closeBtn" #closeBtn (click)="yourModal.close()"></button>
</ng-template>
<ng-template #modalBody>
<yourmodalSelectorname></yourmodalSelectorname>
</ng-template>
<ng-template #modalFooter></ng-template>
</modal>
</div>
import {ViewChild, ElementRef} from '@angular/core';
@Component({
moduleId: ...,
selector: '.',
templateUrl: '.',
styleUrls: ['.']})
yourFunction() {
//do something
...
...
//close your modal
this.closeModal();
}
//call this wherever you want to close modal
private closeModal(): void {
this.closeBtn.nativeElement.click();
}
モーダルボディにフォームを含めないでください。代わりに、フッターセクションに同じボタンを2つ追加してください。
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><span aria-hidden="true">×</span></button>
</div>
<div class="modal-body">
<label class="form-control-label col-sm-2">Comments:</label>
<div class="col-sm-10">
<textarea class="form-control" rows="3"></textarea>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
<button type="submit" class="btn btn-primary" >Save changes</button>
</div>
</div>
</div>
</div>
私はこのようにそれをしました、そして、それは完全に私のために働きます。
var element = document.getElementById("CloseButton") as any;
element.click();
ここで、私のCloseButton
はbootstrap閉じるボタン。