2017-10-11 11 views
0

サーバーからの要求データを各サービスの日付文字列から日付オブジェクトに変換する最もよい方法は何ですか? データベースからいくつかのユーザーをフェッチするuserServiceがあるとします。各ユーザーは、このインタフェースを実装しています角度4 - 各サーバーエンティティの日付文字列をオブジェクトに変換する

export interface UserAccountInformation { 
 
    id: string, 
 
    email: string, 
 
    companyName?: string, 
 
    phoneNumber?: string, 
 
    firstName?: string, 
 
    lastName?: string, 
 
    country?: string, 
 
    zipCode?: string, 
 
    creationDate: Date 
 
}

しかし、クライアント上のユーザーを受信したときのCreationDateが文字列ではなくオブジェクトです。私はそれがサービスから変更することができます知っているが、多分私の要求応答の正規表現を使用してすべてのサービスのための一般的なソリューションがあるのだろうか? このようなものを使用するのは良い考えですか? RxJSと

+0

'新しいDate(userAccountInformation.creationDate)'? – str

+0

私は、すべての異なるサービスからサーバーから受け取ったすべてのオブジェクトの一般的なソリューションを探しています。これは一例にすぎません。 –

+0

[この質問](https://stackoverflow.com/questions/43228574/angular2-mapping-of-nested-json-arrays-to-model)を見てください - 私はあなたのより一般的なバージョンだと思います。 'Date'と同じ問題が、他のカスタムクラスでも起こります。 –

答えて

1

可能な 'クリーン' ソリューション:

export interface UserAccountInformation { 
    id: string, 
    email: string, 
    companyName?: string, 
    phoneNumber?: string, 
    firstName?: string, 
    lastName?: string, 
    country?: string, 
    zipCode?: string, 
    creationDate: Date 
} 

const response: any = { 
    id: '1', 
    email: '[email protected]', 
    companyName?: 'companyname', 
    phoneNumber?: '+000', 
    firstName?: 'firstname', 
    lastName?: 'lastname', 
    country?: 'country', 
    zipCode?: 'zipcode', 
    creationDate: '2017-01-01' 
} 

// replace Rx.Observable.of with Angular HTTP this.get('urlToCall') 
Rx.Observable.of(response) 
.map((response: any) => { 
    response.creationDate = new Date(response.creationDate) 
    //cast to UserAccountInformation interface 
    return <UserAccountInformation>response; 
}) 
.subscribe((userAccountInformation: UserAccountInformation) => { 
    console.log(userAccountInformation); 
}); 

Output: 
{id: "1", email: "[email protected]", companyName: "companyname", phoneNumber:     "+000", firstName: "firstname", 
creationDate: Sun Jan 01 2017 01:00:00 GMT+0100 (W. Europe Standard Time) 
…} 
+0

ご回答いただきありがとうございますが、各HTTPリクエストのアプリスコープでこの問題をサポートする一般的なソリューションを探しています。 –

関連する問題