Мне часто нужно добавить setTimeout, чтобы команда работала правильно с Ionic.
Моя конфигурация:
Ionic:
ionic (Ionic CLI) : 4.0.1 (/Users/rguerin/.nvm/versions/node/v6.10.1/lib/node_modules/ionic)
Ionic Framework : ionic-angular 3.1.1
@ionic/app-scripts : 1.3.7
System:
NodeJS : v6.10.1 (/Users/rguerin/.nvm/versions/node/v6.10.1/bin/node)
npm : 3.10.10
OS : macOS High Sierra
Мой шаблон:
<ion-list [formGroup]="formGroup">
<ion-item *ngIf="countries">
<ion-label floating>
{{ 'customer.country' | translate }}
<span class="required" ion-text color="red">*</span>
</ion-label>
<ion-select formControlName="Country">
<ion-option *ngFor="let c of countries" [value]="c.In">{{c.Out}}</ion-option>
</ion-select>
</ion-item>
Например, если я попытаюсь установить значение элемента управления формы, как это, оно не будет работать должным образом без setTimeout:
private setFormControlValue(propertyName: string, value: string, stockEmpty?: boolean): void {
let formControl: AbstractControl = this.formGroup.controls[propertyName];
if (_.isEmpty(value) && !stockEmpty) {
return;
} else {
if (!_.isEmpty(formControl) && !_.isNil(formControl)) {
this.logger.trace('Setting value %s for control : ', value, formControl);
setTimeout(() => formControl.setValue(value), 100);
}
}
}
Также происходит, когда я хочу изменить размер моего контента:
ngOnInit(): void {
setTimeout(() => this.content.resize(), 100);
}
Иногда даже работает с таймаутом 0 мс.Я бы не хотел использовать таймаут везде, но у меня сложилось впечатление, что Ионику нужно, чтобы инструкция выполнялась в другом «потоке», чтобы она выполнялась правильно.
Если кто-то сталкивается с той же проблемой или знает лучшеОбходной путь, я бы с радостью взял его.