小编Mar*_*yna的帖子

Angular:将模板传递给子组件的最佳/推荐方法

我想知道最好或推荐的方法是将模板传递给子组件。据我所知,基本上有 3 种方法可以做到这一点:

选项1

父级.html

<ng-template #mytemplate>
  <!-- some stuff -->
</ng-template>

<child [stuff]="myTemplate"></child>
Run Code Online (Sandbox Code Playgroud)

孩子.ts

@Input() public stuff: TemplateRef<any>;
Run Code Online (Sandbox Code Playgroud)

孩子.html

<ng-container [ngTemplateOutlet]="stuff"></ng-container>
Run Code Online (Sandbox Code Playgroud)

选项2

父级.html

<child>
  <ng-template #mytemplate>
    <!-- some stuff -->
  </ng-template>
</child>
Run Code Online (Sandbox Code Playgroud)

孩子.ts

@ContentChild(TemplateRef) layoutTemplate: TemplateRef<any>;
Run Code Online (Sandbox Code Playgroud)

孩子.html

<ng-container *ngTemplateOutlet="layoutTemplate">
</ng-container>
Run Code Online (Sandbox Code Playgroud)

选项3

父级.html

<child>
  <!-- some stuff -> not ng-template around it! -->
</child>
Run Code Online (Sandbox Code Playgroud)

孩子.ts

// nothing required
Run Code Online (Sandbox Code Playgroud)

孩子.html

<ng-content></ng-content>
Run Code Online (Sandbox Code Playgroud)

我无法在文档中找到有关“标准”方式的任何内容。仅仅是味道吗?其中之一是否有好处使其成为默认方式?

当然,总有一些用例其中一种更适合。但我对上面的例子感兴趣 - 所有这些都可以使用。

是否已经在某处给出了一些文档或建议?看来您在搜索“如何将模板传递给子项”时找到的示例更有可能使用选项 2。但是为什么呢?我猜这是因为他们倾向于展示案例示例,其中模板不仅用于将其传递给子项,而且还用于父项本身。

谢谢!

parent-child ng-template angular

10
推荐指数
1
解决办法
5734
查看次数

标签 统计

angular ×1

ng-template ×1

parent-child ×1