在Angular 11中,可以通过指令和属性来创建模板上下文,为数据创建模板上下文的步骤如下:
@Input
装饰器将属性声明为可从父组件传递的输入属性。ngTemplateOutlet
指令和ngTemplateOutletContext
属性来创建模板上下文。下面是具体的步骤和示例代码:
ChildComponent
,并在其模板中使用数据:import { Component, Input } from '@angular/core';
@Component({
selector: 'app-child',
template: `
<div>{{ data }}</div>
`,
})
export class ChildComponent {
@Input() data: any;
}
import { Component } from '@angular/core';
@Component({
selector: 'app-parent',
template: `
<app-child [data]="myData"></app-child>
`,
})
export class ParentComponent {
myData: any = {
name: 'John',
age: 25,
};
}
ngTemplateOutlet
和ngTemplateOutletContext
来创建模板上下文:import { Component, Input } from '@angular/core';
@Component({
selector: 'app-child',
template: `
<ng-template [ngTemplateOutlet]="myTemplate" [ngTemplateOutletContext]="templateContext"></ng-template>
`,
})
export class ChildComponent {
@Input() data: any;
myTemplate: any = `
<div>Name: {{ name }}</div>
<div>Age: {{ age }}</div>
`;
templateContext: any;
ngOnChanges() {
this.templateContext = {
$implicit: this.data,
name: this.data.name,
age: this.data.age,
};
}
}
在上面的例子中,子组件ChildComponent
接收一个data
输入属性,然后将模板上下文中的数据分别绑定到name
和age
变量上。父组件ParentComponent
通过属性绑定将数据传递给子组件。
这样,在父组件的模板中,<app-child [data]="myData"></app-child>
会渲染子组件的模板,并在模板中使用ngTemplateOutlet
和ngTemplateOutletContext
创建模板上下文。子组件的模板会根据模板上下文中的数据进行渲染,显示名字和年龄。
需要注意的是,模板上下文中使用的属性名$implicit
是一个约定俗成的命名,表示默认的数据。你也可以添加其他属性来传递更多的数据。
这是一个基本的例子,你可以根据具体的需求扩展和调整模板上下文的内容和结构。如果需要了解更多关于Angular的知识和使用,请参考腾讯云的Angular产品文档:Angular产品文档
领取专属 10元无门槛券
手把手带您无忧上云