web-dev-qa-db-fra.com

La valeur spécifiée ne peut pas être analysée ou est hors de portée lors de l'utilisation de la tuyau de numéro

La valeur spécifiée ne peut pas être analysée ou est hors de portée

Lorsque j'obtiens mon objet, j'ai formater un numéro avec un tuyau, mais cela renvoie cet avertissement et la valeur n'est pas affichée. Si je le supprime, il est affiché.

Cela n'affiche pas la valeur

  <input name="value" [ngModel]="value | number : '1.2-2'"/>

Ceci affiche la valeur

  <input name="value" [ngModel]="value"/>

TS Ici, je reçois mon objet par son identifiant après l'avoir choisie dans une liste.

  ngOnInit(){
    this.get();
  }

get() {
    this.service.get(this.id).subscribe(
      (data) => {
        this.object = data;
        this.name = this.object.name;
        this.value = this.object.value;
      },
      (error) => {
        console.log(error);
      }
    );
  }

La valeur est un nombre et je l'obtiens dans la console sans aucun problème.

4
leri

Le problème n'est pas avec ngModel mais avec la stratégie OnPush.

Lorsque vous effectuez des travaux ASYNC, vous devez informer le détecteur de changement que vos données ont changé.

constructor(private cd: ChangeDetectorRef) {}

get() {
    this.service.get(this.id).subscribe(
      (data) => {
        this.object = data;
        this.name = this.object.name;
        this.value = this.object.value;
        // notify the cd here
        this.cd.markForCheck();
      },
      (error) => {
        console.log(error);
      }
    );
  }
0
kvetis