0
votes

À l'aide de la méthode MAP () dans Typescript angulaire angulaire, réseau de retour d'observable dans une fonction

J'ai cette méthode dans mon service: xxx pré>

mon erreur: p>

export class PriceRule {
  public static fromJson(json: Object): PriceRule {
    return new PriceRule(
       json['id'],
       json['activity'],
       json['duration'],
       json['is_indoor'],
       json['surface'],
       json['hour_start'],
       json['hour_end'],
       json['price'],
       json['currency'],
       json['weekdays']
    );
  } 

  constructor(
        public id: string,
        public activity: string,
        public duration: number,
        public is_indoor: boolean,
        public surface: string,
        public hour_start: string,
        public hour_end: string,
        public price: number,
        public currency: string,
        public weekdays: number[]
    ) {}
}


0 commentaires

3 Réponses :


0
votes

Supprimer la carte

.map(response => PriceRule.fromJson(response));


2 commentaires

Mais si je fais cela, il ne renvoie que des objets JSON du serveur, ce que je veux, c'est d'instancier tout le JSON dans un objet pricerule et pour les retourner (Pricerule [])


Utilisez-vous le httpClient de '@ angular / commun / http'; parce qu'il retourne l'objet



3
votes

Vous confondez l'observable mappe code> avec le tableau Carte code>: xxx pré>

La carte RXJS, mappe votre réponse à une autre valeur, À partir de là, vous devez prendre votre tableau et cartonnez-le sur le Pricerule code>. P>

Une autre façon de le faire, ce qui ne nécessite pas votre fromjson code> méthode est: p> xxx pré>

d'une autre manière, est de faire le pricerule code> une interface, si vous le faites, vous n'avez besoin de mappage: P>

return this.http.get<PriceRule[]>(this.url);


2 commentaires

Quelqu'un a dit que Angular convertit le Json en un objet automatiquement, donc je n'ai pas besoin de le faire (Fromjson)?


@Fealo Oui, c'est déjà un objet. Mais votre Dijson travaille également avec un objet, pas avec JSON String. Si vous ne voulez pas de méthodes sur votre pricerule , vous pouvez également en faire une interface. Encore moins de code



0
votes

Lorsque vous dites getpricerules (): observable , ce que cela signifie est la méthode getpricerules renvoie observable qui retournera PrixRULE [] < / Code> (tableau de règles de prix). Lorsque vous appelez la carte sur cet observable, il essaie d'appliquer la fonction de carte à la matrice de Pricerule (Pricerule []) et non à chaque objet Pricerle. De plus, JSON à la conversion d'objet est effectué par angulaire automatiquement. Donc, supprimez la fonction Carte.


0 commentaires