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

Ste*_*ffi 38 javascript angular2-directives angular2-template angular

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

问题如果hasURL为false,组件显示按钮,但ng-content为空.因为它已经在第一篇中读到了"a></a>

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

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

        <button class="bouton" *ngIf="!hasURL">
            <ng-content>
            </ng-content>    
        </button>
Run Code Online (Sandbox Code Playgroud)

谢谢!

yur*_*zui 67

你可以用ng-contentng-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>
Run Code Online (Sandbox Code Playgroud)

Plunker示例

也可以看看

  • 我的错误,它实际上似乎有效,但你不能输出 ng-content 两次,只有当它包装在 *ngIf 中时,如此处提到的,抱歉。 (4认同)