9

我想在我的组件中显示不同的模板。只有一个会显示。 如果hasURLtrue,我想显示<a></a>。 如果hasURLfalse,我想显示<button></button>如何在Angular 2的相同组件中使用多个ng-content?

问题如果hasURL为false,组件显示按钮,但ng内容为空。因为它是第一个“已读a></a>

有没有办法解决这个讨好?

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

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

谢谢!

回答

11

可以在ng-template包裹ng-content和使用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

又见

+0

谢谢!它效果很好。我仍然使用Angular 2而不使用Angular 4,所以我必须使用'