2016-08-18 11 views
2

角2では、複数の配列を持つ配列を定義することが可能かどうか疑問に思っていました。ちょうど私が何を意味するかを示すために、おそらく簡単です:配列内の配列を角2とTypescriptで定義する

私はこれを使用して開始しました:

export class PaymentDetails { 
    account: any[]; 
    bpNumber: number; 
} 

が、これは私がそれを埋めたときに、私は本当に、アカウント内のデータにアクセスすることができなかったという問題を与えました私はそれの中に多くの配列をしたいので、配列。

だから今、私はこのように私のクラスを定義したいと思います:

export class PaymentDetails { 
    account: [ 
     debitAccount: [ 
      { 
       debitAccountId: string; 
       debitBankCode: string; 
       debitBankName: string; 
       debitCountryCode: string; 
       debitAccountNumber: string; 
       debitAccountHolder: string; 
       debitContinous: string; 
       debitDueDate: string; 
       iban: string; 
       bic: string; 
      } 
     ], 
     ccAccount: [ 
      { 
       ccAccountId: string; 
       ccCompanyCode: string; 
       ccNumber: string; 
       ccStart: string; 
       ccExpiry: string; 
       ccDsbTransactionId: string; 
       ccCardholderName: string 
      } 
     ] 
    ]; 
    bpNumber: number; 

} 

が、これがすべてで可能ですか?

クラスは、このInMemoryDataServiceで埋めなっている

export class InMemoryDataService { 
    createDb() { 
let paymentDetailsDB = [ 
     { 
     account: [ 
      { 
      debitAccount: [ 
       { 
       debitAccountId: '8736583', 
       debitBankCode: '45345', 
       debitBankName: 'KSK HGTT', 
       debitCountryCode: 'DE', 
       debitAccountNumber: '123453463', 
       debitAccountHolder: 'A Berg', 
       debitContinous: '', 
       debitDueDate: '', 
       iban: 'DE12344235', 
       bic: '324645', 
       }, 
       { 
       debitAccountId: '6567456', 
       debitBankCode: '55463453', 
       debitBankName: 'GRDFE', 
       debitCountryCode: 'DE', 
       debitAccountNumber: '00', 
       debitAccountHolder: 'A Berg', 
       debitContinous: '', 
       debitDueDate: '', 
       iban: 'DE43523453', 
       bic: '123547665', 
       } 
      ], 

      ccAccount: [ 
       { 
       ccAccountId: '23413', 
       ccCompanyCode: '254345', 
       ccNumber: '238857827368837', 
       ccStart: '2010-10-05', 
       ccExpiry: '2018-10-05', 
       ccDsbTransactionId: '235231', 
       ccCardholderName: 'Anne Berg', 
       } 
      ], 
      } 
     ], 
     bpNumber: 4711, 
     } 
    ]; 
    return {paymentDetailsDB}; 
    } 
} 
+2

有効なJavaScriptコード==有効typescriptですコード。これをチェックしてください:http://stackoverflow.com/questions/966225/how-can-i-create-a-two-dimensional-array-in-javascript –

+0

あなたのコードを見ると、私は以下を参照してください:(1)あなたのクラス"配列にプロパティを持たせたい"と言っていますが、(2)paymentDetailsDBが "各配列アイテムに子配列を持つ"と宣言するコード。 JSは#1を許可しませんが、#2は完全に有効です(mxiiは#2実装の例を書いています) –

答えて

3

次のようになります。あなたの定義:

匿名型のバリアント:

export class PaymentDetails { 
    accounts: 
    { 
    debitAccounts: 
    { 
     debitAccountId: string; 
     debitBankCode: string; 
     debitBankName: string; 
     debitCountryCode: string; 
     debitAccountNumber: string; 
     debitAccountHolder: string; 
     debitContinous: string; 
     debitDueDate: string; 
     iban: string; 
     bic: string; 
    }[], 

    ccAccounts: 
    { 
     ccAccountId: string; 
     ccCompanyCode: string; 
     ccNumber: string; 
     ccStart: string; 
     ccExpiry: string; 
     ccDsbTransactionId: string; 
     ccCardholderName: string 
    }[], 

    bpNumber: number; 
    }; 
} 

という名前の種類は(あなたがこれを使用する必要があります! ])

export class DebitAccount { 
    Id: string; 
    BankCode: string; 
    BankName: string; 
    CountryCode: string; 
    Number: string; 
    Holder: string; 
    Continous: string; 
    DueDate: string; 
    iban: string; 
    bic: string; 
} 

export class CcAccount { 
    Id: string; 
    CompanyCode: string; 
    Number: string; 
    Start: string; 
    Expiry: string; 
    DsbTransactionId: string; 
    CardholderName: string 
} 

export class Account { 
    debitAccounts: DebitAccount[]; 
    ccAccounts: CcAccount[]; 
    bpNumber: number; 
} 

export class PaymentDetails { 
    account: Account[]; 
} 
+0

は最終結果が同じであると思われます(または少なくともjson scructureはコンソールに表示すると同じです) 。しかし、これはもっとエレガントで分かりやすいです。私の最初の問題は、私が間違って配列とオブジェクトにアクセスしていたということでした...この投稿は多くの助けになりましたhttp://stackoverflow.com/questions/11922383/access-process-nested-objects-arrays-or -json –

0

ネストされた配列は、次のように定義することができる:

items = [ 
    {name:'xyz', subMenuItem:[{name:'abc'}, {name:'cde'}], icon:'home'}, 
    {name:'pqr', subMenuItem:[{name:'abc'}, {name:'cde'}], icon:'home'}, 
    ]; 
関連する問題