2017-01-18 61 views
-3

我一直在四處搜尋,但我沒有看到我正在尋找的答案。如果我的問題重複,請讓我知道。正確的方法來創建打印對象

我想創建一個包含屬性是自定義類型的typescript中的對象。

問題是我的服務器提供的URL與對象。我不知道如何處理這個映射。請原諒,如果我沒有解釋得很好。我對這些都很陌生。順便說一句我正在使用Angular和Typescript

這裏是一個例子。目的是這樣的:

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

但是,從我的服務器檢索的JSON是這樣的:

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

如果我使用的URL地址,我應該得到JSON格式的地址。

謝謝你的時間!

+0

看來你錯過了很多關於你在做什麼和你想做什麼的基本知識。沒有辦法給你的問題提供一個很好的答案。 – lexith

+0

你的意思是說url是另一個http調用來獲取「地址」信息? – Ayyash

+0

@lexith你是對的,我從來沒有做過任何前端的東西。我在angular.io上經歷了一個例子,並試圖創建一個CRUD應用程序。 – ericDaWang

回答

1

如果我假設你有關如何將服務器檢索到的數據映射到本地打字對象的問題,一種方法是在類中創建一個靜態方法來返回類的新實例,它需要一個類型爲「any」的對象並返回一個映射所有屬性後的對象。 http請求返回後或訂閱後使用該方法取決於您的設置。

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

解析您從服務器檢索的JSON然後將其分配給您的屬性,如下面

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

注意是一個很好的做法是定義用於製作要求服務器單獨的服務

+0

感謝你的迴應!所以你的意思是在我從http回調中得到迴應後,我應該再次使用url進行http呼叫以獲取地址? – ericDaWang

+0

如果你想從地址獲取數據,那麼你應該這樣做 –

相關問題