无法获得ng2-bootstrap模式以显示在bs-modal-backdrop

时间:2016-09-20 14:46:07

标签: angular ng2-bootstrap

我使用ng2-bootstrap的模态时遇到了问题。我正在做整个viewContainerRef hack提到here。 我在一个深层嵌套的组件中创建一个模态(通过路由选择4个级别)。我从上面的链接中复制了模态代码。 每当我尝试打开它时,它会像这样打开:bs-modal-backdrop完全覆盖屏幕,包括模态,阻止我与它交互。知道为什么会这样吗?enter image description here

2 个答案:

答案 0 :(得分:2)

这是z-index的特定情况。至少有一个父组件创建了一个堆栈上下文,其z-index小于背景z-index 1040.现在所有HTML元素都将堆叠在它的上下文中。

这就是为什么背景与模态重叠的原因,无论模态具有什么z-index。

解决问题:

  1. 在与背景相同的上下文中创建一个模态,这样z-index就可以了。 app app header component之外的某个地方。

  2. 提升父组件z-index,使其高于背景1040.

  3. 完全描述了here

答案 1 :(得分:0)

这对我有用,虽然它不是最佳的:

为模态代码实施onShow()onHide()这样的事件:

<div class="modal fade"
     bsModal #uploadModal="bs-modal"
     [config]="{backdrop:'static'}"
     tabindex="-1"
     (onShow)="handler('onShow', $event)"
     (onHide)="handler('onHide', $event)"
     role="dialog"
     aria-hidden="true">

然后像这样定义处理程序:

private handler(type: string, event: any) {

    if (this.containerId) {

      let elem:Element = document.getElementById(this.containerId);

      if (!elem)
        return;

      switch (type) {

        case 'onShow':
          elem.classList.add('modal-front');
          break;
        case 'onHide':
          elem.classList.remove('modal-front');
          break;
      }

    }
  }

通过openModal()等机制传递containerId。 最后,添加仅设置高z-index的全局范围类modal-front。