Ionic 3: асинхронный канал в ion-select возвращает ноль до выбора - PullRequest
2 голосов
/ 04 июня 2019

У меня есть пользовательский компонент трубы, которому требуется труба async вместе с ним для возврата вывода.Он работает во всем приложении без проблем.

Однако при использовании пользовательского компонента вместе с async pipe в ion-select при начальной загрузке в выбранном параметре отображается ноль [1], пока вы не откроетеионный выбор, а затем он заполняет все правильные выходы [2].

null data! [при открытии модального окна данные отображаются как ноль] [1]

correct data![щелчок по выбору ion-select преобразует данные соответствующим образом] [2]

Я снял каналы, чтобы посмотреть, загружается ли начальная информация в программу ion-select, и да, данные есть.Это только возвращает ноль, когда каналы также реализованы.

Я передаю объект 'item' через navParams этому модалу.

Я должен использовать 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>

extended-currency.ts (pipe)

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, а не ноль.

...