2017-04-20 3 views
0

in meiner angular2 Komponentewie kann ich String json in angular2

keyword_test={}; 

getData() { 
    this.service.getData() 
     .subscribe(
      data => { 
       this.keyword_test = data 
       console.log(data); 
       console.log(this.keyword_test); 
      }); 

} 

console.log (Daten) und console.log (this.keyword_test) drucken richtigen Daten wie diese

   { 
        "caption": "folder0", 
        "type": "folder", 
        "subnodes": [ 
         { 
          "caption": "folder1", 
          "type": "folder", 
          "subnodes": [ 
           { 
            "caption": "keyword1", 
            "type": "keyword", 
            "search_filter_expression": "sfe1" 
           }, 
           { 
            "caption": "keyword2", 
            "type": "keyword", 
            "search_filter_expression": "sfe2" 
           } 
          ] 
         }, 
         { 
          "caption": "folder2", 
          "type": "folder", 
          "subnodes": [ 
           { 
            "caption": "keyword3", 
            "type": "keyword", 
            "search_filter_expression": "sfe3" 

           }, 
           { 
            "caption": "keyword4", 
            "type": "keyword", 
            "search_filter_expression": "sfe4" 

           } 
          ] 
         } 
        ] 
       } 

bekommen, aber in meinem ngOnInit

ngOnInit() { 
    this.getData(); 
    console.log(this.keyword_test); 
} 

trotz der this.getdata(), this.keyword_test print "Object {}" ich denke, kein Objekt. Ist der Schlüsselwort_test falsch initialisiert? wenn ich console.log (typeof data) in getData Funktion drucke, Ergebnis ist String ... Ich habe es zu JSON im Dienst geändert, aber ich weiß nicht warum.

++ und das ist mein Service

@Injectable() 
export class keywordService { 
    private API_URI: string = 'MYAPIURL'; 

    constructor(private http: Http) { 
    } 

    getData() { 
     return this.http.get(this.API_URI, {body: ""}) 
      .map(res => {res.json(); 
     }); 
    } 

}

+0

manuell in keyword_test Typing korrekt funktionieren. –

Antwort

0
ngOnInit() { 
    this.getData(); // this execute but data arrives with call back 
    console.log(this.keyword_test); //this execute before data has arrived and thats why it is not printing the result from success call 
} 

Richtigen Weg

this.service.getData() 
    .subscribe(
     data => { 
      this.keyword_test = data 
      console.log(data); 
      console.log(this.keyword_test); 
}); 
Verwandte Themen