2016-06-29 17 views
1

Ich versuche, JSON-Daten von api zu erhalten und deren Inhalt angezeigt werden unter Verwendung von Winkel 2. Conversation Komponente:Http Get auf Angular 2, lesen json

export class ConversationComponent implements OnInit { 
    public conversation: any; 

    constructor(private conversationsService: ConversationsService, 
       private routeParams: RouteParams) { } 


    ngOnInit() { 
     let id = +this.routeParams.get('id'); 
     this.conversationsService.getConversation(id) 
      .subscribe(
      con => this.conversation = con, 
      error => console.log(this.conversation) 
      ) 
    } 
} 

ComversationsService: einige

@Injectable() 
export class ConversationsService { 

    private url = 'https://dev4.aldensys.com/PrometheusWebAPI/api/Conversations/'; 
    private token = this.storageService.getAuthorizationToken(); 

    constructor(private http: Http, private storageService: StorageService) { } 

    getConversation(id: number) { 
     var headers = new Headers(); 
     headers.append('Authorization', 'Bearer ' + this.token); 
     var options = new RequestOptions({ headers: headers }); 
     return this.http.get(this.url + id, options) 
      .map(res => res.json()) 
      .catch(this.handleError); 
    } 

    private handleError(error: any) { 
     let errMsg = (error.message) ? error.message : 
      error.status ? `${error.status} - ${error.statusText}` : 'Server error'; 
     console.error(errMsg); // log to console instead 
     return Observable.throw(errMsg); 
    } 
} 

Für Grund dafür, dass die Konversation nicht definiert ist. Ich versuchte, Antwort sofort nachdem ich es auf json auf Service-Datei zuordnen: es zeigt 'Objekt: Objekt'

Jede Hilfe wird sehr geschätzt werden.

+0

was meinst du undefined? Du meinst aus dieser Zeile 'error => console.log (this.conversation)'? – maxisam

+0

auf * .component.html Datei Ich versuche, '{{conversation.number}}' anzuzeigen. Dort steht, dass die Konversation nicht definiert ist. – Yhlas

+0

Wenn ich '{{conversation.number}}' in '{{(Konversation) ändere? conversation.number: ""}} 'es funktioniert. Allerdings sollte es dafür eine bessere Lösung geben. – Yhlas

Antwort

2

Ich sehe. Sie Problem ist die Vorlage Fehler zeigt, bevor die Daten in kommt.

Verwendung dieses

{{conversation?.number}}

in Angular2 es mit Vergleich Angular1

hier der Verweis nicht, dass verzeihlich ist

im doc ist
+1

Das hat geholfen, vielen Dank. Ich habe tatsächlich '* ngIf = 'conversation'' verwendet, also muss ich nicht jede Zeile bearbeiten, auf die ich die Konversation referenziere. [Attribut]. – Yhlas