【问题标题】:Pass html to viewChild in Angular 5将html传递给Angular 5中的viewChild
【发布时间】:2018-11-25 01:14:47
【问题描述】:

我正在尝试将 html 传递给 viewchild,以便它可以将其添加到它自己的组件 html 中。直到现在我还没有找到如何解决这个问题的答案。 我对 Angular 完全陌生,所以我读过的大部分答案都是关于我不太了解的很多主题的,这让我很难。

父级正在使用 NgbModal (@ng-bootstrap/ng-bootstrap) 打开引导模式。由于我不想在整个项目中都为模态本身重复相同的代码,所以我想为它使用一个组件。模态组件(viewchild)正在工作,除了我无法将 html 传递给模态组件,因此它可以使用 html 填充模态体。

触发模态如下:

this.modalService.open(content, options).result;

有没有办法使用内部 html,例如:

<app-modal #modal>
    <img src="test.png" alt="test" />
</app-modal>

所以图像将是引导模式的内容。

【问题讨论】:

  • 检查此article 会有所帮助。
  • 添加答案试用

标签: javascript html angular bootstrap-4 bootstrap-modal


【解决方案1】:

我最终通过将包含的组件包装到 ng-template 中来修复它。

父组件的html,包括模块/viewChild:

<ng-template #imageFileModalContent let-c="close" let-d="dismiss">
    <app-modal>
        <img [src]="msgFile" />
    </app-modal>
</ng-template>

Modal 的 html (viewChild):

<div class="modal-body form-group">
    <ng-content></ng-content>
</div>

【讨论】:

  • 它还需要ng-container 才能显示ng-template!类似:&lt;ng-container *ngTemplateOutlet="imageFileModalContent; context: ctx}"&gt;,当我们在组件类中有ctx = {close: 'something', dismiss: 'another'}.ts 文件)
【解决方案2】:

阅读:Content Projection

你可以使用ng-containt : Working Demo

app-modal.component.html(选择器将是 app-modal)

<div class="dynamiccont">
    <ng-content></ng-content>
</div>

当你像这样使用这个组件时

<app-modal #modal>
  <img src="test.png" alt="test" />
</app-modal>

这对你有用,关键是利用ng-content,它可以帮助你包含内容。

【讨论】:

  • 我已经像你说的那样将 ng-content 标签添加到模态组件的模态体中,但它没有显示在模态中,图像应该在其中保持为空的容器以某种方式保持为空。我找不到任何差异,或者为什么它不应该工作。我尝试在 ng-content 标记上使用选择器(选择属性)并尝试不使用,都导致空模式。
  • @MirandaBreekweg - 你的意思是说图像标签来了,但它没有加载图像?
  • @MirandaBreekweg - 如果图片没有加载,那么路径一定是错误的
  • 我的意思是整个图片标签不在modal里面,所以ng-content标签基本都换成nothing了。
  • @MirandaBreekweg - 简单的工作演示:stackblitz.com/edit/…
猜你喜欢
  • 2019-01-16
  • 1970-01-01
  • 2018-08-30
  • 1970-01-01
  • 1970-01-01
  • 2018-10-03
  • 2018-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多