Search code examples
angularbootstrap-modal

How can I close a modal in Angular 2?


I want user click the Submit button and the modal close automatically.

If I add data-dismiss="modal" in the Submit <button>, it won't run submitComments().

I tried to do something like $('#myModal').modal('hide');, but not succeed.

So how can I close a modal in Angular 2? Thanks

<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.
}

Solution

  • Apart from the @MattScarpino's answer, another alternative is just to change your button type to button from submit and call your function submitComments() and at the same time call dismiss-modal. by doing so you are able to dismiss the modal and call function too at the same time hope this may help you. here is example:

    <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>
    

    #Update

    if you wish to close modal from your controller side you can use using this way

    $("#myModal").modal("hide");