angular ngTemplateOutlet父子组件完整使用案例

个人感觉有点类似于vue的作用于插槽

以下是一个 Angular ngTemplateOutlet 父子组件完整使用案例:

假设我们有一个 parent 父组件和一个 child 子组件。我们想在父组件中动态地显示子组件,并将一些数据传递给子组件。

在子组件的模板中,我们定义了一个 ng-template,用于显示父组件传递给子组件的数据。然后使用 ng-containerngTemplateOutlet 指令,将该模板插入到子组件模板中指定的位置。

ng-container 指定了要插入模板的位置,而 ngTemplateOutlet 指定了要插入的模板的名称。还可以通过 ngTemplateOutletContext 属性(context)向模板传递参数。例如:

子组件模板:

<ng-template #dataTemplate let-data>
  <div>
    <h2>{{data.title}}</h2>
    <p>{{data.description}}</p>
  </div>
</ng-template>

<div>
  <ng-container *ngTemplateOutlet="dataTemplate; context: {$implicit: data}"></ng-container>
</div>

在父组件的模板中,我们使用 <app-child> 元素引用子组件,并使用 ng-template 定义一个名为 dataTemplate 的模板,然后将该模板插入到子组件中指定的位置。

父组件模板:

<app-child>
  <ng-template #dataTemplate let-data>
    <div>
      <h2>{{data.title}}</h2>
      <p>{{data.description}}</p>
    </div>
  </ng-template>
</app-child>
或者父组件模板第二种方式:
<div>
  <ng-container *ngTemplateOutlet="dataTemplate"></ng-container>
</div>

<ng-template #dataTemplate>
  <app-child [data]="data"></app-child>
</ng-template>

 

 

在父组件类中,我们定义了一个 data 对象,用于存储要传递给子组件的数据。

import { Component } from '@angular/core';

@Component({
  selector: 'app-parent',
  templateUrl: './parent.component.html',
  styleUrls: ['./parent.component.css']
})
export class ParentComponent {
  data = {
    title: 'Title from Parent Component',
    description: 'Description from Parent Component'
  };
}

 

posted @ 2023-03-16 09:27  赵辉Coder  阅读(134)  评论(0编辑  收藏  举报