2017-06-25 15 views
1

私は角型アプリケーションで作業しています。ここでは、Typescriptでinterfacesを使用して大きなカスタムフォームオブジェクトタイプを定義しています。プロパティの種類は、ほとんどがstringまたはnumberです。
私はngModelを使用してフォームを記入するためにこのオブジェクトを使用しています。したがって、コンポーネント側のこのオブジェクトのプロパティにデフォルト値を割り当てる必要があります(そうでなければ、オブジェクトはundefinedです)。
私の質問は、これらのオブジェクトのプロパティにデフォルト値を割り当てるための好ましい方法または良い方法です。私は、次の方法を知っています:(。現在、私はこの次AM)インタフェース角度でインターフェイスを使用して定義されたオブジェクトのプロパティにデフォルト値を割り当てる

  • 使用して、オブジェクトの形状を定義し、コンポーネント側にデフォルト値を割り当てることが
  • 使用Classは、オブジェクトを定義すると、コンストラクタにデフォルト値を代入します。このようにして、コンポーネントにデフォルト値を割り当てることについて心配する必要はありません。私は、これがあなたのコンポーネントコードを書く上でよりクリーンな方法だと思います。確かにこれが好ましい方法ですが。

classを使用してngModelと、そのオブジェクトを使用しているとき(ネストされたプロパティを持つ)複雑なオブジェクトを定義する方法を好まれるなら、私に教えてください。また、この問題を解決する他の方法がある場合。

+0

'ngModel'は、デフォルト値を持っているすべての入力を必要としませんが。入力は未入力のままにすることができます。だから、なぜあなたはデフォルト値を持たなければならないと感じますか?まず、インターフェイスプロパティをオプションにしないでください。 – BeetleJuice

+0

あなたのオブジェクトは、記入フォーム以外のデフォルト値なしで機能しますか?たとえば、ビジネスロジックの用語で動作しますか?あなたはあまりにも多くの詳細を与えませんでしたが、あなたの主な関心事はフォームに記入しているので、コンポーネント側でデフォルトを設定する必要があります。 –

+1

は 'interface'を使います(JSONオブジェクトは関数ではないので、技術的にはクラスとマッチしません...)し、そのインタフェースのデフォルトのインスタンスを取得するために'サービスを使用する '(コンストラクタのように動作します –

答えて

2

私は私のサービスでは、このような方法があります:

initializeProduct(): IProduct { 
    return { 
     id: 0, 
     productName: null, 
     productCode: null, 
     tags: [''], 
     releaseDate: null, 
     price: null, 
     description: null, 
     starRating: null, 
     imageUrl: null 
    }; 
} 
関連する問題