angular - 组件内的本地模板
问题描述
在我的 Angular 模板上,我想显示两个人的联系信息:
<div>
<div class="person-info">Person One Info</div>
<div>John</div>
<div>778-999-0000</div>
<div>john@web.com</div>
<div>
<div class="person-info">Person Two Info</div>
<div>Jack</div>
<div>778-111-0000</div>
<div>jack@web.com</div>
<div>
</div>
显然标记中有重复,Angular中有没有办法我可以在我的组件内创建某种轻量级的本地模板,这样我就可以将上面的标记更改为
<person-info [name]="John" [phone]="123-456-7890" email="john@web.com"></person-ino>
<person-info [name]="Jack" [phone]="125-476-2890" email="jack@web.com"></person-ino>
解决方案
是的,您可以使用<ng-template>
. 在这里检查:https ://angular.io/guide/structural-directives#creating-template-fragments-with-ng-template
你可以像这样重构你的代码:
<div>
<div *ngFor='let person of persons; let index=index'>
<ng-container [ngTemplateOutlet]="person_info" [ngTemplateOutletContext]="{person:person, index:index}"></ng-container>
</div>
</div>
<ng-template #person_info let-person='person' let-index='index'>
<div class="person-info">Person {{index + 1}} Info</div>
<div>{{person.name}}</div>
<div>{{person.phone}}</div>
<div>{{person.email}}</div>
</ng-template>
推荐阅读
- kubernetes - 具有自定义数据库的 Kubernetes
- javascript - 从 YYYY-DD-MM HH:MM:SS UTC--3 格式在 JavaScript/jQuery 中使用时区解析日期和时间
- javascript - 预期的 catch() 或返回(promise/catch-or-return)
- angular - Ionic 3 + Angular 5:发布数据示例
- php - 我只想删除邮件标题中写的 via 和额外的东西
- javascript - 如何使用javascript检测iphone/ipad中屏幕键盘的高度
- java - Java中的分页sql表
- c++ - 尽管明确声明为私有,但 c++ 函数仍可公开调用
- c# - C# 对象连接与动态对象中的动态标签
- sql - 在同一张表上动态交叉选择查询