Angular 如何在没有ngFor和其他@Component的情况下多次重复一段HTML

Angular 如何在没有ngFor和其他@Component的情况下多次重复一段HTML,angular,Angular,问题很简单,我想在我的模板中多次重复一段HTML 但我希望它在我的页面中的不同位置重复,这意味着ngFor不是解决方案,因为这些片段将直接一个接一个地重复 “可行的解决方案”是为我重复的HTML定义一个特定的@组件,并执行类似操作: 随便什么html随便什么 但是我发现创建一个专门的组件来做类似的事情太过分了,它没有任何功能意义,只是我想要设置的html结构所需要的 ng2模板引擎中是否真的没有允许定义“内部模板”并在当前模板中需要的任何地方使用它? 如果答案是否定的,我想我宁愿复制HTML,

问题很简单,我想在我的模板中多次重复一段HTML

但我希望它在我的页面中的不同位置重复,这意味着ngFor不是解决方案,因为这些片段将直接一个接一个地重复

“可行的解决方案”是为我重复的HTML定义一个特定的@组件,并执行类似操作:
随便什么html

随便什么

但是我发现创建一个专门的组件来做类似的事情太过分了,它没有任何功能意义,只是我想要设置的html结构所需要的

ng2模板引擎中是否真的没有允许定义“内部模板”并在当前模板中需要的任何地方使用它?

如果答案是否定的,我想我宁愿复制HTML,即使有点糟糕。

更新角度5

ngOutletContext
被重命名为
ngTemplateOutletContext

另见

原创

最近添加的可能就是您想要的


它目前可以像这样使用


其中,
image
templateData

如果使用了
$implicit


在rx组件中:




注意:

[ngOutletContext]=“{$implicit:item}”

以及


我不明白您为什么认为组件是过度使用的。如果没有逻辑,那么组件只不过是模板和选择器。它怎么可能更简单呢?例如,如果我可以定义类似的东西,我希望重复的html,并在我希望的地方重用它,那么这可能会更简单。(这并不存在,只是一个例子)。但我明白ng2的设计是把它放在一个组件中,好吗。只有在同一个组件中?是的,这不需要对其他组件可用。我在我的答案中添加了一个Plunker。目前正在尝试一个Plunker。无法使其工作。无法使上述解决方案在@GünterZöchbauer工作。我看不出有什么事情在发生rendered@GünterZöchbauer在您的示例中不会呈现任何内容Plunkers是否可以从文件中设置模板?否。解决方法是在运行时构建组件,如中所述
<campaign-channels-list (onItemSelected)="_onItemSelected($event)" [customTemplate]="customTemplate" (onDragComplete)="_onDragComplete($event)" [items]="m_blockList"></campaign-channels-list>
        <template #customTemplate let-item>
            <a href="#" [attr.data-block_id]="item.blockID">
                <i class="fa {{item.blockFontAwesome}}"></i>
                <span>{{item.blockName}}</span>
                <i class="dragch fa fa-arrows-v"></i>
                <span class="lengthTimer hidden-xs"> 
                    {{item.length | FormatSecondsPipe}}
                </span>
            </a>
        </template>
<div class="sortableList">
                    <li (click)="_onItemSelected(item, $event, i)" *ngFor="let item of m_items; let i = index" class="listItems list-group-item" [ngClass]="{'selectedItem': m_selectedIdx == i}">
                        <template [ngTemplateOutlet]="customTemplate" [ngOutletContext]="{$implicit: item}">
                        </template>
                    </li>
                </div>