ng-docs.github.io
ng-docs.github.io copied to clipboard
关于http异步取值的问题
已经可以读出值来了但是控制台提示未获取到
这个要怎么解决
不放代码,不放请求.....谁知道是哪出的错
第一个service的代码,第二个是 component的代码
不放代码,不放请求.....谁知道是哪出的错
第一个service的代码,第二个是component的代码
虽然.....你没放html的截图,但是我猜测,你的html中会有这样的一个插值表达式{{docs.info}}(或者是docs.xxx.xxx.info),那么你在类中这个属性是无定义的,所以说需要1.判断是不是请求成功在显示.2.或者说改写docs?.info这种.
虽然.....你没放HTML的截图,但是我猜测,你的HTML中会有这样的一个插值表达式{{docs.info}}(或者是docs.xxx.xxx.info),那么你在类中这个属性是无定义的,所以说需要1判断是不是请求成功在显示0.2。或者说改写文档?.INFO这种。
你说的对我在html中的插值确实是{{ docs.info.title}}的方式,已经请求成功了,如果在html页面加上逻辑判断能不能解决这个问题,或者怎么在组件初始化之前给这个属性赋值,因为我现在已经重写了请求现在已经把get请求变成了一个纯同步的了浏览器的控制台已经不报错了,但是我感觉这种的方式并不好
虽然.....你没放HTML的截图,但是我猜测,你的HTML中会有这样的一个插值表达式{{docs.info}}(或者是docs.xxx.xxx.info),那么你在类中这个属性是无定义的,所以说需要1判断是不是请求成功在显示0.2。或者说改写文档?.INFO这种。
你说的对我在html中的插值确实是{{ docs.info.title}}的方式,已经请求成功了,如果在html页面加上逻辑判断能不能解决这个问题,或者怎么在组件初始化之前给这个属性赋值,因为我现在已经重写了请求现在已经把get请求变成了一个纯同步的了浏览器的控制台已经不报错了,但是我感觉这种的方式并不好
初学小白一枚。 感谢开发组的杰出贡献。我也有类似同样的问题,通过Http 异步获取的JSON数据,如果数据返回的数组对象result=[ {},{}]是可以直接ngFor 遍历数组,然后使用插值模板显示数据。 如果返回的是对象类型的,直接使用插值表达式控制台会报题主同样的错误。
这个是有什么区别吗?
冒昧的打扰大家,可以帮我解答一下疑惑吗?
@takyee 你的问题和题主的应该不是一回事,建议单开一个 issue。 简单来说,ngFor 只支持遍历数组,如果需要对对象类型进行处理,可以借助 https://angular.cn/api/common/KeyValuePipe
@asnowwolf 感谢您的耐心回复,我会稍后重新开一个新的issue,可能是我没有描述清楚,我的问题同题主应该非常接近。
醍醐灌顶,ngFor只能遍历数组。
另外用http 获取到的JSON数据,封装相应的变量中,通过插值获取对象的属性值报错,如楼上wszgrcy教的方法:docs?.info,控制台就不会报错
@takyee 我发现使用安全操作符会出现二次数据渲染建议使用路由的resolve
@chinesesoule 感谢您的回复! 冒昧的问一下,我看你到你贴出来的ui截图,是否是使用了ng zorro, 其实也就是 html 模板要处理http异步获取过来的对象,较好的办法就是使用resolve来解决,我稍后来测试一下。 谢谢1
@takyee 是的,我使用了ng zorro
@chinesesoule 没涉及路由的时候resolve,该是如何实现。
希望您别烦我
@takyee 如果没有牵扯到,路由你可以是试试oninit和安全操作符,其实我一直想让异步的方法变成同步的,结果好几次都失败了,如果异步的方法变成同步的话是不存在上述的问题