2017-01-18 7 views
-3

Ich habe gesucht, aber ich sehe nicht die Antwort, die ich suche. Bitte lassen Sie mich wissen, wenn meine Frage dupliziert ist.richtige Art, ein Typoskript-Objekt zu erstellen

Ich versuche, ein Objekt in Typoskript zu erstellen, das Attribute enthält, die benutzerdefinierte Typen sind.

Das Problem ist mein Server bietet das Objekt mit URLs. Ich bin mir nicht sicher, wie ich mit dem Mapping umgehen soll. Bitte entschuldigen Sie, wenn ich das nicht gut erkläre. Ich bin irgendwie neu bei all diesen Dingen. BTW Ich benutze Angular und Typescript

Hier ist ein Beispiel. Das Objekt ist wie:

export class Contact { 
    name : string; 
    address : { 
     street : string; 
     city : string; 
    } 
} 

Aber die json von meinem Server abgerufen ist wie:

{ 
    "name" : "firstname lastname", 
    "address" : "http://localhost:5000/contacts/001" 
} 

Wenn ich die URL-Adresse verwenden soll ich die Adresse im JSON-Format bekommen.

Vielen Dank für Ihre Zeit!

+0

Es scheint, dass Sie eine Menge Grundwissen über das, was Sie tun und was Sie tun möchten, vermissen. Es gibt nicht wirklich eine Möglichkeit, Ihrem Problem eine * gute * Antwort zu geben. – lexith

+0

Sie meinen, die URL ist ein weiterer http-Aufruf, um die "Adresse" Informationen zurück zu bekommen? – Ayyash

+0

@lexith Du hast Recht, ich habe noch nie irgendwelche Front-End-Sachen gemacht. Ich habe dieses Beispiel auf angular.io ziemlich genau durchgespielt und versucht, eine CRUD-Anwendung zu erstellen. – ericDaWang

Antwort

1

einen separaten Service zu definieren, Wenn ich Ihre Frage über die Zuordnung von Server-abgerufenen Daten zu lokalen Typoskriptobjekten anwende, können Sie zum Beispiel eine statische Methode in der Klasse erstellen, die eine neue Instanz der Klasse zurückgibt, ein Objekt vom Typ "any" verwendet und ein Objekt nach dem Mapping aller Eigenschaften. Verwenden Sie diese Methode, nachdem die HTTP-Anfrage zurückkommt oder nach dem Abonnement, hängt von Ihrer Einrichtung ab.

export class Address { 
    constructor(public name:string, description: string){ 
    } 
    public static NewInstance(address: any){ 
     //map here 
     return new Address(address.db_name, address.address); 
    } 
} 
export class Student { 
    constructor(
     public name : string, 
     public classes: StudentClass[], 
     public address: Address 
    ){ 

    } 
    public static NewInstance(student: any){ 
     let studentclasses = student.classes.map(n => StudentClass.NewInstance(n)); 
     return new Student(student.firstname+' ' + student.lastname, studentclasses, Address.NewInstance(student.addresss)); 
    } 

} 
export class StudentClass { 
    constructor(public: name: string); 
    public static NewInstance(studentclass: any){ 
     return new StudentClass(studentclass.namefromdb); 
    } 
} 
1

die json analysieren, die Sie vom Server abgerufen haben, dann es wie

... 
.subscribe(
data => { 
    this.name = data.name 
    this.address = data.adress 
}) 

Hinweis unten an deine Eigenschaften zuweisen, die eine gute Praxis ist für die Herstellung Anforderung an den Server

+0

Danke für du Antwort! Du meinst also, nachdem ich die Antwort vom http-Call zurückbekomme, sollte ich einen weiteren http-Aufruf mit der URL machen um die Adresse zu bekommen? – ericDaWang

+0

Wenn Sie Daten von der Adresse erhalten möchten, sollten Sie das tun –

Verwandte Themen