TKD*_*Dev 10 angular angular5 angular6
如何将 ngFor 变量传递给 ng-content 模板。
例如,包含组件:
<ul>
<li *ngFor="let item of itemsArray">
<ng-content></ng-content>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
嵌套的内容组件:
<div>
<span *ngIf="item.type_one"></span>
<span *ngIf="item.type_two"></span>
</div>
Run Code Online (Sandbox Code Playgroud)
例如,两者:
<containing-component>
<content-component>
</content-component>
</containing-component>
Run Code Online (Sandbox Code Playgroud)
hgi*_*sac 13
您不能ng-content用作动态模板。使用ng-template替代
<ul>
<li *ngFor="let item of itemsArray">
<ng-container *ngTemplateOutlet="itemTemplate; context: { $implicit: item }">
</ng-container>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
export class ContainingComponent {
...
@ContentChild(TemplateRef, {static: true})
@Input() itemTemplate: TemplateRef<any>;
}
Run Code Online (Sandbox Code Playgroud)
因此,您可以将动态模板引用到containing-component. 在这种情况下,您可以将 ng-template 包装在content-component
<containing-component [itemTemplate]="itemTmpl">
</containing-component>
<ng-template #itemTmpl let-data>
<content-component
[item]="data">
</content-component>
</ng-template>
Run Code Online (Sandbox Code Playgroud)
或使用ng-template directly:
<containing-component
[itemTemplate]="itemTmpl"
[itemArray]="items">
</containing-component>
<ng-template #itemTmpl let-data>
<div>
<span *ngIf="data.type_one"></span>
<span *ngIf="data.type_two"></span>
</div>
</ng-template>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8303 次 |
| 最近记录: |