我想知道最好或推荐的方法是将模板传递给子组件。据我所知,基本上有 3 种方法可以做到这一点:
父级.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)
父级.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)
父级.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。但是为什么呢?我猜这是因为他们倾向于展示案例示例,其中模板不仅用于将其传递给子项,而且还用于父项本身。
谢谢!