【问题标题】:Single instance problem of ngx-bootstrap modalngx-bootstrap modal的单实例问题
【发布时间】:2019-05-29 04:21:19
【问题描述】:

我从 ngx-bootstrap modal 开发了三个不同的组件 1. 模态 2. iFrame 模态 3. Alertbox 模态

我只是在这些组件中传递模板并渲染它。

但是当我在单个模板中使用任意两个时,问题就来了。共享相同的实例。所以当我隐藏一个模态时,其他模态输出隐藏也会触发。

我认为这是由于相同的 BsModalService 服务利用率。 那么有什么解决办法吗?

<app-new-modal (hidden)="onModalHidden()">
<div heading>Heading</div>
</app-new-modal>
<app-iframe-modal #iframe (hidden)="onIframeHidden()">
<div heading>Heading</div>
</app-iframe-modal>

【问题讨论】:

  • 你能分享你的ts代码吗?否则,如果您可以使用stackblitz.com提供演示,那就太好了
  • @Outlooker 请关注这个 Stackblitz link....检查控制台关闭任何两种方法正在触发。

标签: angular modal-dialog bootstrap-modal ngx-bootstrap ngx-modal


【解决方案1】:

尝试实例化与该特定组件相关的服务。由于您正在订阅模式关闭并发出事件,因此这似乎会调用所有场景,而不管该特定组件如何。希望这会有所帮助:)

@Component({
  selector: 'app-modal',
  templateUrl: './modal.component.html',
  styleUrls: ['./modal.component.css'],
  providers: [BsModalService]
})

---------------------------------------------------------

@Component({
  selector: 'app-alertbox',
  templateUrl: './alertbox.component.html',
  styleUrls: ['./alertbox.component.css'],
  providers: [BsModalService]
})

【讨论】:

  • 但是我有实用程序的通用模块......这样我必须声明两个模块。单模块方法可以吗?
  • @AshishSharma 不太清楚 2 个模块在您的情况下意味着什么
  • 我没有正确阅读你写的 w.r.t. to Component 这解决了这个问题。谢谢
猜你喜欢
  • 2023-03-20
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多