通过单击背景或在模态外部停止关闭模态

时间:2017-01-03 07:07:18

标签: angular ng-bootstrap

我在代码中使用了一个angular2 ng-bootstrap模态。

我希望当我在模态外单击时,模态不会关闭。目前,模式在外部点击时关闭。

在angular1中,我曾经通过[keyboard] =" false" [背景] ="'静态'&#34 ;.但现在是时候它没有在angular2中工作了。

这是我的plunker

My Open方法如下:

  open() {
    const modalRef = this.modalService.open(NgbdModalContent);
    modalRef.componentInstance.name = 'World';
  }

5 个答案:

答案 0 :(得分:31)

根据@anshuVersatile的答案,我知道我们需要使用一些模态选项。

然后我创建了一个NgbModalOptions的对象,并将其作为我的open方法的第二个参数传递,它可以工作。

代码如下:

let ngbModalOptions: NgbModalOptions = {
      backdrop : 'static',
      keyboard : false
};
console.log(ngbModalOptions);
const modalRef = this.modalService.open(NgbdModalContent, ngbModalOptions);

以下是更新后的plunker

答案 1 :(得分:4)

$modal.open({
   // ... other options
   backdrop  : 'static',
   keyboard  : false
});

在创建模态时,您可以指定其行为:

答案 2 :(得分:2)

如果角度2+(bsmodal)中的ngx-bootstrap / modal,请使用[config] =“ {background:'static'}”, .ts文件,如

import {ModalDirective} from 'ngx-bootstrap/modal';
@ViewChild('myModal') public myModal: ModalDirective;

 openpopup(){
     this.myModal.show()
  }

和.html之类的

<button class="btn btn-md btn-pill btn-success mb-3 pull-right" type="button" data-toggle="modal" (click)="openpopup()">Open</button>

 <div bsModal #myModal="bs-modal" class="modal fade"  [config]="{ backdrop: 'static' }"  tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog" role="document">
      <div class="modal-content">
        <div class="modal-header">
          <h4 class="modal-title">Popup heading</h4>
          <button type="button" class="close" (click)="myModal.hide()" aria-label="Close">
            <span aria-hidden="true">&times;</span>
          </button>
        </div>

        <div class="modal-body">
          <!---- popup content here---->
        </div>
      </div><!-- /.modal-content -->
    </div><!-- /.modal-dialog -->
  </div><!-- /.modal -->

答案 3 :(得分:2)

在您的component.ts文件中

import { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';
import { ViewChild, TemplateRef } from '@angular/core';

//--------

constructor(
    private modalService: BsModalService
  ) {}

@ViewChild('sampleModal', {static: true}) sampleModalRef: TemplateRef<any>;

modalRef: BsModalRef;

config = {
    backdrop: true,
    ignoreBackdropClick: true
  };

//-------

open() {
    this.modalRef = this.modalService.show(this.sampleModalRef, this.config);
  }

HTML

<ng-template #sampleModal>
      .
      .
      .
      .
</ng-template>

答案 4 :(得分:0)

尽管已经很晚了,但对于面临该问题的其他人可能会有帮助:

 const config: ModalOptions = {
                backdrop: 'static',
                keyboard: false,
                animated: true,
                ignoreBackdropClick: true,
                initialState: {
                  data1: 'new-user',
                  username: 'test'
                }
              };
              this.bsModalRef = this.modalService.show(MyComponent, config);

initialState对象用于将数据传递给模式。