为了账号安全,请及时绑定邮箱和手机立即绑定

如何在角度中渲染开槽的 ng 模板

如何在角度中渲染开槽的 ng 模板

江户川乱折腾 2022-09-16 21:34:05
我有自定义组件。此组件的模板如下所示:tabtab<ng-content></ng-content>我使用这样的组件:tab<tab>  <ng-template>    ...  </ng-template></tab>在组件内部,我有一个参数。根据这个参数,我希望这个槽被渲染或不渲染。我该如何实现这一点?如何从组件内部呈现此内容?tabInputInputng-templateng-templatetab
查看完整描述

1 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

如果使用 ,则不能使用它来呈现此内容。您需要使用以下指令:ng-templateng-contentngTemplateOutlet


父模板:


<button (click)="show = !show">Toggle</button>


<tab [show]="show">

  <ng-template>

    I am rendered

  </ng-template>

</tab>

儿童:


export class HelloComponent  {

  @ContentChild(TemplateRef)

  template?: TemplateRef<any>;


  @Input()

  show?: boolean;

}

子模板:


<ng-container *ngIf="show" [ngTemplateOutlet]="template"></ng-container>

工作示例


另一种方法是将显示留给父组件:


父模板:


<button (click)="show = !show">Toggle</button>


<tab>

  <ng-template [ngIf]="show">

    I am rendered

  </ng-template>

</tab>

子模板:


<ng-content></ng-content>

工作示例


最后一个答案听起来像是反对我的第一个答案,我提到你不能用它来渲染,但在这种情况下,它正在处理模板的渲染。ng-contentng-template*ngIf


查看完整回答
反对 回复 2022-09-16
  • 1 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号