Не возвращать никаких данных после обещания в Ionic 3 - PullRequest
0 голосов
/ 20 декабря 2018

Привет. В настоящее время я работаю над приложением Ionic, которое должно отображать пользователю некоторые данные в Form Group после получения их с помощью SOAP ReadData.

Я вызываю свою функцию изатем я отображаю данные в форме, единственная проблема заключается в том, что форма не отображается.

constructor(
  public navCtrl: NavController,
  public navParams: NavParams,
  private privacyProvider: PrivacyProvider,
  private formBuilder: FormBuilder
  ) {

  this.myParam = navParams.get('myParam');

  console.log(this.myParam);

  this.getAnagrafica().then(() => {
    console.log(this.iobAnagrafica);
    debugger;
    this.formAnagrafica = this.formBuilder.group({
      ID_INSTALLATO: new 
 FormControl(this.iobAnagrafica.id_installato),
      ID_ANAGRAFICA: new FormControl(this.iobAnagrafica.id_anag),
      ID_PRODUTTORE: new 
 FormControl(this.iobAnagrafica.id_produttore),
      ID_GRUPPO: new FormControl(this.iobAnagrafica.id_gruppo),
      ID_INSTALLATORE: new 
 FormControl(this.iobAnagrafica.id_installatore)
      });
   });

 }

 getAnagrafica(){
  return new Promise((resolve, reject) =>{


this.privacyProvider.getIOBAnagrafica(this.myParam).subscribe((data)=> {
   if (data) {
     this.iobAnagrafica = data;
     resolve(true);
   } else {
      reject();
   }
 })
});
}

Как я могу решить эту ошибку?Это мой HTML:

<ion-content>
<ion-list *ngIf="formLoaded">
<form [formGroup]="formAnagrafica">
  <ion-item>
    <ion-label stacked>ID INSTALLATO</ion-label>
    <ion-input formControlName="ID_INSTALLATO" type="text"></ion-input>
  </ion-item>
  <ion-item>
    <ion-label stacked>ID ANAGRAFICA</ion-label>
    <ion-input formControlName="ID_ANAGRAFICA" type="text"></ion-input>
  </ion-item>
  <ion-item>
    <ion-label stacked>ID PRODUTTORE</ion-label>
    <ion-input formControlName="ID_PRODUTTORE" type="text"></ion-input>
  </ion-item>
  <ion-item>
    <ion-label stacked>ID GRUPPO</ion-label>
    <ion-input formControlName="ID_GRUPPO" type="text"></ion-input>
  </ion-item>
  <ion-item>
    <ion-label stacked>ID INSTALLATORE</ion-label>
    <ion-input formControlName="ID_INSTALLATORE" type="text"></ion-input>
  </ion-item>
</form>

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Я думаю, вы должны использовать ngModel в вашем случае: https://ionicframework.com/docs/developer-resources/forms/ объявить переменную в вашем TS

public callBack;
constructor(
  public navCtrl: NavController,
  public navParams: NavParams,
  private privacyProvider: PrivacyProvider,
  private formBuilder: FormBuilder
  ) {

  this.myParam = navParams.get('myParam');

  console.log(this.myParam);

  this.getAnagrafica().then((chart) => {
    this.callBack = chart;
 }
...

, после этого она должна отобразиться в полях, и выможно использовать переменную callBack и для ngIf

<ion-content>
<ion-list *ngIf="callBack">
<form [formGroup]="formAnagrafica">
  <ion-item>
    <ion-label stacked>ID INSTALLATO</ion-label>
    <ion-input [(ngModel)]="callBack.id_installato" formControlName="ID_ANAGRAFICA" type="text"></ion-input>
  </ion-item>
...
0 голосов
/ 20 декабря 2018

Кажется, вы никогда не устанавливали свой флаг formLoaded в значение true.

Попробуйте это:

this.getAnagrafica().then(() => {
    console.log(this.iobAnagrafica);
    debugger;
    this.formAnagrafica = this.formBuilder.group({
      ID_INSTALLATO: new 
 FormControl(this.iobAnagrafica.id_installato),
      ID_ANAGRAFICA: new FormControl(this.iobAnagrafica.id_anag),
      ID_PRODUTTORE: new 
 FormControl(this.iobAnagrafica.id_produttore),
      ID_GRUPPO: new FormControl(this.iobAnagrafica.id_gruppo),
      ID_INSTALLATORE: new 
 FormControl(this.iobAnagrafica.id_installatore)
      });

      this.formLoaded = true;
   });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...