使用 ng-content 的角度传递模板参考

Posted

技术标签:

【中文标题】使用 ng-content 的角度传递模板参考【英文标题】:Angular pass template reference using ng-content 【发布时间】:2020-02-21 07:37:12 【问题描述】:

我想将ng-template 作为嵌套在子元素中的ng-content 传递

app-component.html

<app-parent>
  <ng-template appTemplateRetrieval>
    <div>this should be passed to grand child</div>
  </ng-template>
</app-parent>

父组件.html

<app-child>
  directivesTemplate
</app-child>

父组件.ts

 @ContentChild(TemplateRetrievalDirective, static: false) tplRetDir: TemplateRetrievalDirective;

  get directivesTemplate(): TemplateRef<any> 
    return this.tplRetDir && this.tplRetDir.template;
  

指令

export class TemplateRetrievalDirective 

  constructor(public template: TemplateRef<any>)  



子组件.ts

@ContentChild(TemplateRef, static: true) contentTpl: TemplateRef<any>;

  ngAfterContentInit() 
    console.log(this.contentTpl) // logs to console: undefined
  

stackblitz:https://stackblitz.com/edit/angular-cuipde

我希望TemplateRef 向下传递两个级别:app-component > parent > child

【问题讨论】:

【参考方案1】:

如果您要向上或向下传递数据超过 1 级,我建议您查看服务并使用主题或行为主题在多个组件之间传递数据。

【讨论】:

我只是想知道 TemplateRef 没有被孙子识别是什么意思

以上是关于使用 ng-content 的角度传递模板参考的主要内容,如果未能解决你的问题,请参考以下文章

将 ng-content 的字符串输入直接渲染为 HTML

如何在 Angular 2 中编译 ng-content 中的动态模板

以编程方式将投影内容传递给儿童? (否则将呈现为 <ng-content> )

Angular Storybook - 道具旋钮和 ng-content

在角度模板中动态传递输入参数

动态插入 ng-content 选择