Угловому значению подписки всегда присваивается значение - 1, значение перед реальным - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь выполнить событие после того, как .subscribe выполнено, потому что код зависит от результата

verifBordereauExistBase(id: string) {
    return this._BourdereauService.get_one(id).subscribe(
        data = > {
            if (data.idBourdereau == null) {
                this.idBourdereauIsValid = false;
            } else {
                this.idBourdereauIsValid = true;
            }
        }, err = > {
            console.error(err)
        }, () = > {})
}

и основной тест здесь

AddBordereautoList() {
  this.verifBordereauExistBase(this.idbordereaux);
  console.log(this.idBourdereauIsValid)
  if (Number.isNaN(Number(this.idbordereaux))) {
      this.notifier.notify('error', 'Format code a bare invalide');
  } else if (this.idbordereaux.length != 10) {
      this.notifier.notify('error', 'Format code a bare invalide');
  } else if (this.idBourdereauIsValid == false) {
      this.notifier.notify('error', 'Bordereau n\'existe pas ');
  } else {
      if (this.map.size == 0) {
          this.map.set(1, this.idbordereaux);
      } else {
          let x: number = this.verifexistbordereau(this.idbordereaux);
          if (x === 0) {
              this.map.set(this.map.size + 1, this.idbordereaux);
          } else {
              this.notifier.notify('error', 'Bordereau N°' + this.idbordereaux + 'existe deja dans la liste!');
          }
      }
  }
  this.idbordereaux = "";
}

Я выполняю этот код, и значение this.idBourdereauIsValid на один шаг позади, оно дает мне значение - 1 всегда

1 Ответ

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

Код под this.verifBordereauExistBase(this.idbordereaux); может выполняться до того, как this.verifBordereauExistBase(this.idbordereaux); сможет вернуться.Для этого добавьте код AddBordereautoList() к шагу завершения .subscribe:

verifBordereauExistBase(id: string) {
    return this._BourdereauService.get_one(id).subscribe(
        data = > {
            if (data.idBourdereau == null) {
                this.idBourdereauIsValid = false;
            } else {
                this.idBourdereauIsValid = true;
            }
        }, err = > {
            console.error(err)
        }, () = > {
            console.log(this.idBourdereauIsValid)
            if (Number.isNaN(Number(this.idbordereaux))) {
                this.notifier.notify('error', 'Format code a bare invalide');
            } else if (this.idbordereaux.length != 10) {
                this.notifier.notify('error', 'Format code a bare invalide');
            } else if (this.idBourdereauIsValid == false) {
                this.notifier.notify('error', 'Bordereau n\'existe pas ');
            } else {
                if (this.map.size == 0) {
                    this.map.set(1, this.idbordereaux);
                } else {
                    let x: number = this.verifexistbordereau(this.idbordereaux);
                    if (x === 0) {
                        this.map.set(this.map.size + 1, this.idbordereaux);
                    } else {
                        this.notifier.notify('error', 'Bordereau N°' + this.idbordereaux + 'existe deja dans la liste!');
                    }
                }
            }
            this.idbordereaux = "";
        })
}
...