我有一个Angular list:

点击列表元素,我期望在明细区域看到点击元素对应的明细:

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

语法为:

<h2>My Heroes</h2>
<ul class="heroes"><li *ngFor="let everyhero of heroes" (click)="onSelect(everyhero)"><span class="badge">{{everyhero.id}}</span> {{everyhero.name}}</li>
</ul>

在Component里实现事件响应函数的代码:

定义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标签页里报的错误:
ERROR TypeError: Cannot read property ‘name’ of undefined

问题的根源是,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>

之后问题消失:

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

Angular 界面元素的条件渲染相关推荐

  1. Angular界面元素CSS样式的条件式施加方式

    我有一个Angular列表,我期望在元素li被点击时,显示的外观和其他元素不一样.可以通过li被点击时,给该元素分配一个CSS样式的方式来实现. 定义一个selected CSS类: list当前元素 ...

  2. web前端高级React - React从入门到进阶之React条件渲染

    系列文章目录 第一章:React从入门到进阶之初识React 第一章:React从入门到进阶之JSX简介 第三章:React从入门到进阶之元素渲染 第四章:React从入门到进阶之JSX虚拟DOM渲染 ...

  3. angular条件渲染、列表渲染、属性绑定、样式绑定、事件绑定

    文章目录 属性绑定 样式绑定 绑定单一样式 绑定多个样式 用 NgStyle 设置内联样式 类绑定 绑定单个类样式 绑定到多个 CSS 类 用 NgClass 添加和删除类 条件渲染 列表渲染 *ng ...

  4. Class绑定、Class对象绑定、v-if(条件渲染)、v-show(元素显示)、v-for(列表渲染)

    Class绑定 知识点 v-bind:class v-bind:class 为html标记绑定样式单class属性. <div id="myApp"><div v ...

  5. angular,vue,react的基本语法—双向数据绑定、条件渲染、列表渲染、angular小案例...

    基本语法: 1.双向数据绑定 vue 指令:v-model="msg" react constructor(){this.state{msg:"双向数据绑定" ...

  6. vue学习笔记1——v-if和templete 条件渲染 使用 key 控制元素的可重用

    在官网上看教程,根据教程记录一下笔记: 在进行条件渲染时,可使用 key 控制元素的可重用. 官网例子效果如下图: 点击按钮可进行切换. 具体的实现代码官网给出了,但是只是html的代码. 完整代码如 ...

  7. Vue之概述、基本使用、data数据和if条件渲染

    一.Vue概述 Vue.js是前端三大新框架:Angular.js.React.js.Vue.js之一,Vue.js目前的使用和关注程度在三大框架中稍微胜出,并且它的热度还在递增. Vue.js读音 ...

  8. 02-Vue基础之条件渲染和列表渲染

    文章目录 01.条件渲染 1.1.v-if 使用场景 1.2.v-show使用场景 02.列表渲染 2.1.v-for的基本使用 2.2.v-for遍历时key的选择问题 01.条件渲染 Vue中的条 ...

  9. 前端MVC Vue2学习总结(四)——条件渲染、列表渲染、事件处理器

    一.条件渲染 1.1.v-if 在字符串模板中,如 Handlebars ,我们得像这样写一个条件块: <!-- Handlebars 模板 --> {{#if ok}}<h1> ...

最新文章

  1. Android提示框与通知的使用
  2. Eclipse如何更改包名后,批量修改文件的包名
  3. Openresty最佳案例 | 第4篇:OpenResty常见的api
  4. JS+CSS打造一款漂亮绿色相册代码
  5. 互联网时代IT系统的变革-硬件系统定制化发展
  6. 求5阶矩阵其对角线上所有元素之和
  7. arduino使用oled代码_【惊不?】Arduino改造古董卡西欧计算器为作弊神器
  8. Centos7 +Django的安装
  9. 02、MySQL—数据库基本操作
  10. 计算机快捷键下档健,电脑文档快捷键
  11. 2003系统中证书服务
  12. error40无法打开到sql_技术分享|初识SQL优化之执行计划查看分析
  13. 菜单设计器(Menu Designer)及其B/S,C/S双重实现(B/S开源)
  14. POJ_1753解答过程的理解
  15. 查看Anaconda内置的Python版本的方法
  16. 车载系统不识别 U盘
  17. Idea 格式化代码 Idea设置快捷键 格式化代码
  18. DataInputStream和DataOutputStream
  19. (图像加密)常用图像置乱算法matlab实现(二)
  20. 花生壳域名指向跟本地ip不一致的情况是无所谓的

热门文章

  1. Ehcache BigMemory: 摆脱GC困扰(转)
  2. 2012年度最新免费web开发设计资源荟萃
  3. 电子商务公司的职能架构及基础岗位职能
  4. WCF,简单而又复杂的东西
  5. [self Introduce]MY job pic
  6. rabbitmq(四)、消息丢失问题
  7. Some about me
  8. 1.4 面向对象的基本概念
  9. mysql基础----mybatis的批量插入(一)
  10. jQuery-1.9.1源码分析系列(五) 回调对象