关于angular2 赋值问题

我在做项目的时候发现了一个问题就是我获取到了一个JSON的对象数组,如果我用*ngfor来遍历的话可以把数据都遍历出来,但单个的输出的时候又会出错具体请看下面

首先我把获取到的数据通过*ngfor指令来遍历数据是能够出现的。

代码片段

clipboard.png

结果

clipboard.png

然后如果我不通过*ngfor指令遍历数据,从JSON的对象数组中单独取出某一个展示到页面上的时候却会发生令我感到惊讶的错误。

代码片段

clipboard.png

结果

clipboard.png

这个结果真是让我百思不得其解,但是如果我在获取到JSON的对象数组对象之后再单独把里面的对象拿出来然后再展示在页面上又成功显示了。

代码片段

clipboard.png

clipboard.png

html代码

clipboard.png

结果

clipboard.png

所以我很奇怪为什么会这样我在angular1的时候
clipboard.png这种写法是可以的但为什么在angular2上会出错呢,而且我并没有在代码上发现问题,所以我就想问一下这究竟是怎么回事?

可能我问的这个问题比较白痴,但还是希望有了解原因的告诉我一声。

阅读 3.7k
2 个回答

我看你说获取到json对象,所以最开始是个空的。
所以初始*ngFor发现是个空不会进行遍历取值、渲染,而模板会直接去取值,取[0]是undefined,再取undefinedname属性所以才会报错。
我觉得是这个原因,你是钻牛角尖了。

你在写TypeScript了,应该养成习惯写interface来描述这个contact_list,而不是简单的给个any类型,这样只要你的interface里面有描述了name属性,模板就不会报错了。在typescript的编程约束下,楼上给的方案用ngIf或者{{contact_list[0]&&contact_list[0].name}}这样写法都是不优雅的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题