【问题标题】:reusable modal with dynamic content in angular5angular5中具有动态内容的可重用模态
【发布时间】:2018-03-27 16:36:58
【问题描述】:

我有一个与其他几个组件一起使用的可重用模态组件。

我使用的模态框架来自ng-bootstrap (NgbActiveModal)。

模式只是列出了一组来自调用它的父组件的字符串。

但是,我希望模态显示取决于父组件。例如,我可能需要它来显示表格而不是列表。我是这样弄的:

<div class="modal-body">
  <div *ngIf="data.encoding !== undefined">
    <p>Hello {{data.name}}. These are your badly encoded words:</p>
    <ul><li *ngFor="let item of data.words">{{item}}</li></ul>
  </div>
  <div *ngIf="data.urls !== undefined">
    <p>Hello {{data.name}}. These are your broken urls:</p>
    <ul><li *ngFor="let item of data.urls">{{item}}</li></ul>
  </div>

这行得通,但它确实很丑陋并且完全依赖于父级的数据项。正确执行此操作的角度方法是什么?

【问题讨论】:

  • “角度方式”是用这个可重用的模板制作一个组件,并在必要时简单地将您的组件注入到父 HTML 模板中。您可以让组件接受 input ,然后正确显示它。例如。如果您的组件名为app-resuable-component,您可以放置​​&lt;app-reusable-component [data]="mydata"&gt;&lt;/app-resuable-component&gt;
  • @SyntacticFructose,试图理解。模板是我的模态组件的“主体”部分,两个 ngIf 语句对应于调用模态的两个不同父组件。你是说我应该创建一个与每个父组件对应的结果模板组件并将其作为其主体注入到模态组件中?

标签: angular angular5


【解决方案1】:

我相信您可以使用输入字段。所以在模态组件中是这样的:

Input() content;

然后简单地说:

const modal = this.modalService.open(ModalComponent);
modal.componentInstance.content = 'something here';

在打开模式时添加所需的文本或其他内容。

【讨论】:

  • 谢谢。这正是我为将“数据”放入模态(只是 json 数据)所做的工作。我不知道如何添加 html,我是否应该编写一个包含 html 的指令并将其也添加到模式中?我还不明白如何将表格格式添加到某些父级的模式和另一个父级的列表格式中。
  • 如果您想在其中添加 html,您可以使用组件的动态加载 - 例如创建映射字符串:组件(使用您的 html)并发送字符串作为输入。然后,您可以使用所需的所有格式轻松地将组件加载到模态模板中。这是对动态加载的很好解释:medium.com/@DenysVuika/….
  • 如果有人在寻找解决方案,请查看帖子:stackoverflow.com/questions/44360691/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-22
  • 2020-08-11
  • 2014-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多