【问题标题】:Repeating use of ng-content重复使用 ng-content
【发布时间】:2016-06-07 16:51:02
【问题描述】:

我有一个 angular 2 组件(我的面板),它将使用 ng-content 显示提供的内容。我还想在扩展模式中显示相同的内容,但似乎我只能在模板中引用一次 ng-content。

是否可以在模板中多次引用面板内容,从而避免多次传递相同内容并需要使用带有 ng-content 的选择器专门引用每个内容?

提前致谢。

我的面板模板:

<div class="panel panel-default">
    <!-- non-expanded panel -->
    <div class="panel-body">
        <ng-content></ng-content>
    </div>

    <button data-toggle="modal" data-target="#myModal">Expand</button>

    <!-- Modal -->
    <div id="myModal" class="modal fade" role="dialog">
        <div class="modal-dialog">
            <!-- Modal content-->
            <div class="modal-content">
                <div class="modal-body">
                    <ng-content></ng-content>  <-- content not displayed
                </div>
            </div>
        </div>
    </div>
</div>

希望使用我的面板:

<my-panel>
 <p>my panel content</p>
</my-panel>

【问题讨论】:

标签: angular


【解决方案1】:

应该只有一个&lt;ng-content&gt; 没有select="selector" 属性。所有与其他&lt;ng-content&gt; 元素的选择器不匹配的内容都将被嵌入到第一个没有select 属性的&lt;ng-content&gt; 元素中。

你可以改用的是

罢工>

<div *ngFor="let x of y" *ngForTemplate="someTemplateRef"

Plunker example

更新

上述语法似乎在 Angular2 final 中中断。

改为使用

<template ngFor let-x [ngForOf]="y" [ngForTemplate]="someTemplateRef">
  <div *ngFor="let x of y" *ngForTemplate="someTemplateRef">
</template>

这也可能有效(未尝试)

<div *ngFor="let x of y template:someTemplateRef"

【讨论】:

  • 感谢您的回复。我实际上想要做的是克隆传递给我的面板的数据,但如果不通过两次传递数据然后选择每个数据来自己克隆数据,我似乎无法做到这一点。传入的数据最终将成为由大量网络调用填充的重量级组件,我试图避免重复所有这些只是为了在展开模式中显示相同的内容。但如果我对你的理解正确,我就不能那样做。
  • @user3481798 你找到更好的方法了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2016-12-06
  • 2019-07-11
  • 1970-01-01
  • 2021-05-07
  • 2019-12-13
相关资源
最近更新 更多