加载后阵列上的 ngFor
ngFor on array after loading
我正在尝试在加载数组后制作卡片列表。请参阅下面的代码。
locations;
constructor(
private toolbarTitle: ToolbarTitleService,
public popoverController: PopoverController,
private syncService: SyncServiceService,
private userService: UserService
) {}
async ngOnInit() {
this.toolbarTitle.setToolbarTitle('Locaties');
const user = await this.userService.getUser();
// Get all the shops
this.locations = await this.syncService.getShops(user);
}
html
<ion-card
*ngFor="let location of locations | async"
class="locatieCard"
>
<ion-item>
<img class="locatieImg" src="assets/spar_img.jpg" slot="start" />
<ion-grid>
<ion-row>
<ion-card-subtitle>{{ location.Name }}</ion-card-subtitle>
</ion-row>
<ion-row>
<ion-button
size="small"
fill="clear"
(click)="presentPopover($event)"
>Meer info</ion-button
>
</ion-row>
</ion-grid>
</ion-item>
</ion-card>
但是没用。我究竟做错了什么?
我已经在我的 ngFor 指令中使用了异步,但这并没有为我解决问题。
您可能混淆了 Observable 和 Promises。你的 getShops()
方法 return 是什么类型?
如果它 return 是 Observable<Location[]>
那么你不需要 await
因为 await
会等待 Promise 解决。
如果 return 是 Promise<Location[]>
,那么您需要 await
而不是 ngFor
中的 async
管道。 | async
实际上订阅了一个 observable。
编辑:
实际的解决方案在下面的discussion/chat中。
我正在尝试在加载数组后制作卡片列表。请参阅下面的代码。
locations;
constructor(
private toolbarTitle: ToolbarTitleService,
public popoverController: PopoverController,
private syncService: SyncServiceService,
private userService: UserService
) {}
async ngOnInit() {
this.toolbarTitle.setToolbarTitle('Locaties');
const user = await this.userService.getUser();
// Get all the shops
this.locations = await this.syncService.getShops(user);
}
html
<ion-card
*ngFor="let location of locations | async"
class="locatieCard"
>
<ion-item>
<img class="locatieImg" src="assets/spar_img.jpg" slot="start" />
<ion-grid>
<ion-row>
<ion-card-subtitle>{{ location.Name }}</ion-card-subtitle>
</ion-row>
<ion-row>
<ion-button
size="small"
fill="clear"
(click)="presentPopover($event)"
>Meer info</ion-button
>
</ion-row>
</ion-grid>
</ion-item>
</ion-card>
但是没用。我究竟做错了什么? 我已经在我的 ngFor 指令中使用了异步,但这并没有为我解决问题。
您可能混淆了 Observable 和 Promises。你的 getShops()
方法 return 是什么类型?
如果它 return 是 Observable<Location[]>
那么你不需要 await
因为 await
会等待 Promise 解决。
如果 return 是 Promise<Location[]>
,那么您需要 await
而不是 ngFor
中的 async
管道。 | async
实际上订阅了一个 observable。
编辑: 实际的解决方案在下面的discussion/chat中。