编辑:非工作代码的演示
我在可观察对象上使用异步管道时遇到问题。它适用于一个应用程序,但不适用于另一个应用程序。
工作的可以在这里找到:https ://stackblitz.com/edit/angular-ry1dev
非工作代码:
products.component.ts:
export class ProductsComponent implements OnInit {
products$: Observable<Product[]>;
//NOTE: this service is coming from Akita state management
constructor( private productService: ProductService ) {}
ngOnInit() {
this.products$ = this.productService.getProducts();
}
}
products.service.ts(秋田州管理):
@Injectable({ providedIn: 'root' })
export class ProductService {
constructor( private prodStore: ProductStore, private prodService: ProductsService ) {}
getProducts() {
return this.prodService.getProducts().pipe(
tap( result => {
let dataArr = [];
for (let obj in result) {
dataArr.push(result[obj]);
}
this.prodStore.add(dataArr)
})
)
}
}
products.service.ts(上面 prodService 调用的 http):
getProducts() {
return this.http.get<Product[]>(`${this.API}/products`);
}
products.component.html:
<mat-accordion *ngIf="products$" class='product-accordion'>
<mat-expansion-panel *ngFor="let product of products$ | async">
<mat-expansion-panel-header>
SKU: {{ product.sku }}
</mat-expansion-panel-header>
<p>${{ product.price }}</p>
<p>{{ product.description }}</p>
</mat-expansion-panel>
</mat-accordion>
上述应用的 store 和 query 组件与 stackblitz 相同。
我应该得到一个产品列表,比如 stackblitz 中的待办事项列表,但它在 HTML 中出错:
错误错误:找不到类型为“对象”的不同支持对象“[对象对象]”。NgFor 仅支持绑定到 Iterables,例如 Arrays。
为什么它可以在 stackblitz 上运行,但不能在我的应用程序中运行?
编辑:非工作代码的演示