2016-10-04 10 views
0

私はangular2を初めて使っています。だから私と一緒に抱きしめてください。私がこれまで試してみました何クラスモデル内でサブメニューを宣言するにはどうすればいいですか?

export class Navbar { 
    name: string; 
    submenu: { 
    name: string; 
    } 
} 

は再び:私は、アレイと[]

export class Navbar { 
    name: string; 
    submenu: array; 
} 

これは、サブメニュー宣言のないコードであるを試してみました。

export class Navbar { 
    name: string; 
} 

const NAVBAR: Navbar[] = [ 
    { name: 'Company Data' }, 
    { name: 'Client Data', 
    submenu: [ 
     { name: 'Balance' }, 
     { name: 'Settlement' } 
    ] 
    }, 
    { name: 'Bookie Data' }, 
    { name: 'Bank Data' }, 
    { name: 'Journal Entry' }, 
    { name: 'Journal Bank' }, 
    { name: 'Report', 
    submenu: [ 
     { name: 'General Ledger' }, 
     { name: 'Trial Balance' }, 
     { name: 'Profit/Loss' }, 
     { name: 'Balance Sheet' } 
    ] 
    }, 
    { name: 'Control' }, 
    { name: 'Input', 
    submenu: [ 
     { name: 'Company' }, 
     { name: 'Client' }, 
     { name: 'Bookie' }, 
     { name: 'Master' }, 
     { name: 'Client Agent' }, 
     { name: 'Bookie Balance' }, 
     { name: 'Import Client Data' }, 
     { name: 'Chart Of Account' }, 
     { name: 'Bank' }, 
     { name: 'Bank Company' } 
    ] 
    } 
] 

これは角度によってスローされるエラーです。

app/app.component.ts(10,5): error TS2322: Type '({ name: string; } | { name: string; submenu: { name: string; }[]; })[]' is not assignable to type 'Navbar[]'. 
    Type '{ name: string; } | { name: string; submenu: { name: string; }[]; }' is not assignable to type 'Navbar'. 
    Type '{ name: string; submenu: { name: string; }[]; }' is not assignable to type 'Navbar'. 
     Object literal may only specify known properties, and 'submenu' does not exist in type 'Navbar'. 

どのようなヘルプも私には多大な意味があります。ありがとう!

答えて

0

あり、あなたが変更したいと思うでしょう物事のカップル...まず第一に、あなたはどこにでもnewを呼び出していないので、私が代わりにclassinterfacetypeを使用してお勧めします。

もう1つは、submenu: arrayというものではありません。オプションではないため、そうでないすべてのインスタンスで期待されます(ツリーはどこかで停止する必要があります)。

export interface Navbar { 
    name: string; 
    submenus?: Navbar[]; 
} 

これが動作するようになります:あなたはこのようなインターフェースであなたを残すこと?

を使用してこれを表すことができ

const navbars: Navbar[] = [ 
    { name: 'Company Data' }, 
    { name: 'Client Data', 
    submenus: [ 
     { name: 'Balance' }, 
     { name: 'Settlement' } 
    ] 
    } 
]; 

Example

+0

あなたの答えがあります完璧。ありがとう。あなたはどこでそのようなドキュメンテーションを手に入れましたか教えていただけますか?私は昨日からhttps://angular.io/docs/ts/latest/guide/で検索しています。 –

+0

サブノードオブジェクトのキーを別の名前に変更するとどうなりますか?どのようにする必要がありますか?ありがとう! –

+0

うれしかった!タイプは、angle2ではなく、TypeScriptの機能です。あなたはここで自分のハンドブックで自分のドキュメントを読むことができます... http://www.typescriptlang.org/docs/handbook/interfaces.html – Brocco

関連する問題