离子3:ion-select中的异步管道返回null直到select

时间:2019-06-04 02:15:40

标签: angular ionic-framework async-await ionic3 pipe

我有一个自定义管道组件,该组件需要async管道连同它一起返回输出。它可以在整个应用程序中正常工作。

但是,在async pipe中将自定义组件与ion-select一起使用时,在初始加载时,它在所选选项上显示为空[1],直到打开离子选择器,然后填充所有正确的输出[2]。

null data ![打开模态时,数据显示为空] [1]

correct data ![单击“离子选择打开”将适当地转换数据] [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。

0 个答案:

没有答案