Don*_*Don 10 angularjs-directive angular
我试图显示他的服务呼叫结果时收到错误.html页面有一个带有|的ngFor 异步.我可以进行调用,获取结果,但在尝试呈现页面时收到错误.我知道变量需要是一个Observable才能使异步工作.我不确定我做错了什么,并尝试了几件事.任何见解都表示赞赏.
错误消息: 无效参数'[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object] ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object] ,[对象]'为管道'AsyncPipe'
变量定义
public products:Observable<Product[]>;
Run Code Online (Sandbox Code Playgroud)
致电服务
ngOnInit() {
this.productService.load().subscribe(
data => {
// Set the products Array
this.products = data['_embedded'].products;
},
error => console.log('Could not find product catalog.')
);
Run Code Online (Sandbox Code Playgroud)
}
服务电话
load() {
return this._http.get(`http://localhost:8000/products`).map(response => response.json());
}
Run Code Online (Sandbox Code Playgroud)
HTML
<tbody *ngFor="let product of products | async">
<tr>
<td>{{product.sku}}</td>
<td>{{product.materialNumber}}</td>
<td>{{product.price}}</td>
<td>{{product.baseUom}}</td>
<td>{{product.packageSize}}</td>
<td>{{product.casePack}}</td>
<td>{{product.weight}}</td>
<td>{{product.height}}</td>
</tr>
</tbody>
Run Code Online (Sandbox Code Playgroud)
来自呼叫的数据
And*_*ich 14
Async管道需要一个Observable而不是一个Array.
在您的情况下,只是尝试删除async:
<tbody *ngFor="let product of products">
Run Code Online (Sandbox Code Playgroud)
还要更改变量定义:
public products:Array<Product> = [];
Run Code Online (Sandbox Code Playgroud)
说明:
array | async单独做subscribe.
代码
this.productService.load().subscribe(
data => {
// Set the products Array
this.products = data['_embedded'].products;
},...
Run Code Online (Sandbox Code Playgroud)
转换Observable为Array of Products
更新:这已经有效async:因为products是一个空数组,ngFor不运行.当Observable获得响应并将数据填入时products,change detection会发生一轮并ngFor再次通过(现在填充产品)
我注意到的另一个奇怪的事情(我可能是错的):
ngFor非常喜欢应该tr:
<tbody>
<tr *ngFor="let product of products | async">
...
</tr>
</tbody>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您将拥有多行而只有一行 tbody
| 归档时间: |
|
| 查看次数: |
14489 次 |
| 最近记录: |