2017-05-16 5 views
1

i ont simple abonnez-vous à observer dans une fonction:Rxjs observable abonnez-vous json, paramètre root?

public MyGet() { 
    let results={}; 
    this.http.get("myfile.json").map(res => res.json()).subscribe(
      output => { 
      results=output.clients; // clients is the root of json file 
      }, 
      /* etc */ 

Le fichier JSON "myfile.json" est:

{ 
"clients" : [ 
    { "name":"X", 
     "age":"34" }, 
    { "name": "Y", 
     "age": "41" }, 
    /* etc */ 

Je veux des "clients" en tant que paramètre dans la fonction MyGet:

public MyGet (json_root: any){ 
    let results={}; 
    this.http.get("myfile.json").map(res => res.json()).subscribe(
      output => { 
      results=output.HERE; // HERE = json_root 
      }, 
      /* etc */ 

donc je peux appeler:

MyGet("clients") 

Je ne comprends pas comment écrire json_root dans ICI

+0

Je ne comprends pas vraiment comment le résultat peut être utilisé. Mais pour le 'output.HERE' vous pouvez faire' output [json_root] '. – runit

+0

Mon exemple est une semplification, mais avec "clients" fonctionne. L'idée est d'avoir comme paramètre la racine du fichier json. J'ai essayé la sortie [json_root], ne fonctionne pas. – Johannes

+0

ok, bizarre. Je voulais dire où avez-vous appelé vos résultats ou où l'avez-vous affiché? – runit

Répondre

2

Vous pouvez partager votre fonction.

public MyGet(): Observable<any>{ 
    return this._http.get("myfile.json").map(res => res.json()); 
    } 
    .... 
    private json_root: any; 

    public callAndSubscrive(json_key: string){ 
    this.MyGet().subscribe(output => {this.json_root = output[json_key]; console.log(output)}); 
    } 
+0

pourquoi? Mon problème est que je ne comprends pas quelle syntaxe fonctionne. "clients" est la racine du fichier json, comme vous pouvez le voir dans l'exemple. Maintenant, j'ai un "output.clients" statique et j'ai besoin d'un paramètre dynamique "output.json_root" (où json_root est le "clients" dans l'appel de la fonction). Mais avec "output.json_root" ne fonctionne pas. Dans la définition de MyGet (json_root: any) il est dit "paramètre inutilisé" – Johannes

+0

Ok je vois. Dans ce cas, ce que les gens disent ci-dessus _output [json_root] _ devrait fonctionner. Cependant, faites une console.log de sortie et json_root et vérifiez que output et json_root sont ce que vous attendez. Si la sortie est un objet comme _var obj = {a: 'aa', b: 'bb'} _ alors _obj ['a'] _ est correct pour récupérer la valeur. – kimy82

+0

Maintenant [json_root] fonctionne ... je ne sais pas pourquoi hier n'a pas fonctionné, je suis sûr que la syntaxe était la même. Merci!! – Johannes