Angular 界面元素的条件渲染
我有一个Angularlist:
点击列表元素 , 我期望在明细区域看到点击元素对应的明细:

文章图片
实现方式是 , 给li元素注册click事件响应函数:

文章图片
语法为:
<h2>MyHeroes</h2><ulclass="heroes"><li*ngFor="leteveryheroofheroes"(click)="onSelect(everyhero)"><spanclass="badge">{{everyhero.id}}</span>{{everyhero.name}}</li></ul>在Component里实现事件响应函数的代码:
【Angular 界面元素的条件渲染】定义selectedHero属性 , 用于维护当前选中的hero信息:

文章图片
在明细页面里显示selectedHero的字段值:
<h2>{{selectedHero.name|uppercase}}Details</h2><div><span>id:</span>{{selectedHero.id}}</div><div><label>name:<input[(ngModel)]="selectedHero.name"placeholder="name"/></label></div>然而应用不能按照期望的工作:

文章图片
Chrome开发者工具console标签页里报的错误:
ERRORTypeError:Cannotreadproperty"name"ofundefined

文章图片
问题的根源是 , selectedHero这个property , 在应用程序初始化时是undefined , 因为当前用户尚未点击任何一个li元素 。 解决办法是使用Angular的指令*ngIf进行条件渲染:
<div*ngIf="selectedHero"><h2>{{selectedHero.name|uppercase}}Details</h2><div><span>id:</span>{{selectedHero.id}}</div><div><label>name:<input[(ngModel)]="selectedHero.name"placeholder="name"/></label></div>之后问题消失:

文章图片
推荐阅读
- 地球|宇宙中第二多的元素,在地球上却极为稀缺,宇宙为何会如此偏心?
- 化学元素|美貌与智慧并存的“科学女神”:她们的力量不容忽视
- 维生素d|50岁后养骨需补充哪些营养?钙元素必不可少
- 宇宙|宇宙中最重的元素源自何方?
- 贵州茅台酒厂|茅台酒厂名誉董事季克良:茅台酒蕴含的微量元素高达一千多种
- 恒星|“迷失的元素”锝身世之谜
- 电子科技大学|电子科大邓旭教授团队【综述】超疏水界面材料研究进展
- 剑桥大学|剑桥大学张召富在半导体界面方向工作总结
- 水合物|氙气和疝气到底有什么区别?作为神秘元素的它在疫情中大显身手
- 宋佳气质越来越好,穿格纹大衣复古感十足,戴薄纱帽有种贵妇感▋ 宋佳的大衣造型拆解分析▋ 怎么打造出时髦的大衣造型?⑴适当加入设计元素 提升精
