我在网上找到的大多数示例都展示了如何将async
管道与数组或对象数组一起使用,作为URL API调用的响应。
这种情况是,有时您不会获得数组对象,但是会得到一个包含内部对象和数组的混合对象。并且您仍将在HTML内使用| async
。像这样one
在下面的Stackblitz中,我添加了[data]="remoteData | async"
,并且我的表不会显示任何数据。收到以下错误消息:
错误:InvalidPipeArgument:'[对象对象],[对象对象],[对象 对象],[对象对象],[对象对象],[对象对象]
不用说,如果我将其删除,数据将显示出来。
很显然,我知道我的方法适用于作为响应的数组,在这种情况下,响应是一个对象。我知道您应该使用Observables
(behaviorSubject)来完成这项工作,但是很难做到正确。
那么,我可以保留async pipe
吗?甚至很难响应是一个对象,还是需要手动subscribe
和unsubscribe
?
到目前为止我已经尝试过: 服务中的第18行
this.listSource = apiCall;
return this.listSource;
但我收到一条轻巧的错误消息:
'Observable'缺少类型中的以下属性 “ BehaviorSubject”:_value,value,getValue,next和另外9个。
答案 0 :(得分:1)
在您的控制器中,remoteData
不是可观察到的,而是实际值。
ngOnInit() {
this.remoteData = this.remoteService.getData();
}
现在它是可观察的,并且async
管道将起作用。
答案 1 :(得分:0)
您不需要使用异步管道,只需检查代码,删除异步管道即可,一切都很好。您可以在本教程https://angular.io/tutorial/toh-pt6#asyncpipe
中详细了解如何使用异步管道以及为什么需要使用异步管道