2016-11-30 4 views
0

Ich habe eine Klasse in Typoskript so -komplexer Name des Feldes der Klasse in Typoskript

export class News { 
    title: string; 
    snapshot: string; 
    headerImage: string; 
} 

jetzt in meinem Winkel Dient Ich habe eine Methode, die wie diese Liste der Nachrichten erhalten -

private searchNews(sortOrder : string, query? : string):Observable<News[]>{ 
     return this.http.get(this.url+'?'+this.buildParams(sortOrder,10,0,query)) 
         .map((res:Response) => res.json()) 
         .catch((error:any) => Observable.throw(error.json().error || 'Server error')) 
    } 

hier ist die jSON-Daten i vom Server immer bin -

[{ 
    "jcr:path":"someurl", 
    "title":"Hello News", 
    "snapshot":"Here is a snapshot", 
    "headerImage":"image.png" 
}, 
... 
] 

Jetzt möchte ich „pat ein Feld hinzufügen h " in meiner Nachrichtenklasse, die Wert des Feldes " jcr: Pfad " von JSON-Daten abbildet.

Aber ich kann nicht Klasse wie folgt schreiben -

export class News { 
    jcr:path:string;// I may write it as - path:string 
    title: string; 
    snapshot: string; 
    headerImage: string; 
} 

So ist es so, wie ich Typoskript sagen kann Wert von "Pfad" Feld zu extrahieren aus "jcr: path" Eigenschaften

Antwort

2

Sie können den Namen der Eigenschaft als String definieren:

class News { 
    'jcr:path': string; 
    // ... 
} 
+0

ist das wunderbar, aber können Sie mir bitte sagen, ob es einen Weg gibt, ca i n halte nur den Pfad meines Feldnamens, so dass es einfach ist, in eckigen Ausdruck zu schreiben wie {{news.path}} anstatt {{news ['jcr: path']}} –

+0

Das erfordert, dass du die Form des Underlyings änderst Javascript-Objekt. Sie können dies tun, indem Sie eine Transformation auf Ihrer http-Anfrage verwenden (siehe https://docs.angularjs.org/api/ng/service/$http#transforming-requests-and-responses) – Mike

+0

Ja, das ist, was ich gesucht habe. Vielen Dank. –