我有一个自定义管道组件,该组件需要async
管道连同它一起返回输出。它可以在整个应用程序中正常工作。
但是,在async pipe
中将自定义组件与ion-select
一起使用时,在初始加载时,它在所选选项上显示为空[1],直到打开离子选择器,然后填充所有正确的输出[2]。
![打开模态时,数据显示为空] [1]
![单击“离子选择打开”将适当地转换数据] [2]
我已经离开管道,以查看初始信息是否在离子选择内开始加载,是的,数据在那里。当管道也实现时,它只会返回null。
我正在通过navParams
将'item'对象传递给此模式。
我必须将async pipe
与该模式一起使用,因为自定义管道在可以对其进行转换之前,会先等待将数据作为诺言返回。
item-detail.html
<div *ngIf="item.variantGroup.variants.length > 1" class="w-100">
<p padding-left><b>{{ item.variantGroup.name }}</b></p>
<ion-select [(ngModel)]="item.selected.variant" [selectOptions]="{title: 'Choose an option'}" required class="w-100">
<ion-option *ngFor="let v of item.variantGroup.variants" [value]="v">{{ v.name + ' (' + ( v.price | enhancedCurrency | async ) + ')' }}
</ion-option>
</ion-select>
</div>
enhanced-currency.ts (管道)
transform(value: any, symbol: string) {
let countryCurrency: string;
return this.userProvider.getCountry().then((data: string) => {
!symbol ? countryCurrency = UtilitiesProvider.getMetadataOfCountry(data).currency : countryCurrency = symbol;
return this.cp.transform(_.round(value / 100, 2), countryCurrency, 'symbol-narrow');
});
预期输出应显示价格在模式开放时立即转换。
因此在上面的图片示例中,它显示的是$ 3.50,而不是null。