如何在Angular 2中的同一组件中使用多个ng-content?

时间:2017-06-22 12:30:25

标签: javascript angular angular2-template angular2-directives

我想在我的组件中显示不同的模板。只有一个会显示。 如果hasURLtrue,我想显示<a></a>。 如果hasURLfalse,我想显示<button></button>

问题如果hasURL为false,组件显示按钮,但ng-content为空。因为它已在第一个&#34; a></a>

中读取

有没有办法解决这个问题?

        <a class="bouton" href="{{ href }}" *ngIf="hasURL">
            <ng-content>
            </ng-content>
        </a>

        <button class="bouton" *ngIf="!hasURL">
            <ng-content>
            </ng-content>    
        </button>

谢谢!

1 个答案:

答案 0 :(得分:55)

您可以ng-content中包含ng-template并使用ngTemplateOutlet

<a class="bouton" href="{{ href }}" *ngIf="hasURL">
    <ng-container *ngTemplateOutlet="contentTpl"></ng-container>
</a>

<button class="bouton" *ngIf="!hasURL">
    <ng-container *ngTemplateOutlet="contentTpl"></ng-container> 
</button>
<ng-template #contentTpl><ng-content></ng-content></ng-template>

<强> Plunker Example

另见