2017-05-04 18 views
0

私はメニューに項目を保持するサービスを備えたサイドバーメニューコンポーネントを持っています。複数のソースから、適切と思われるメニューが変更されます。 Typescriptでオブジェクトのコールバックを定義する最善の方法は?

は現在、各項目はSidebarItemを実装します

私は特定のイベントをキャッチすることができますしかし
export interface SidebarItem { 
    name: string, 
    link: Route|string, 
    icon ?: string 
} 

(、ホバーをクリック)し、サイドバーの項目自体のコールバックを定義するためのオプションを持っていると思います。

これを達成する最善の方法を知りたいと思います。インターフェイス上に2つのプロパティを定義して、それを実装する方法を全員に決定させるか、あるいはオプションがあるかどうかを確認する必要があります。サイドバーの各項目に新しいクラスが必要なわけではないので、サイドバーの項目をクラスにすることはできません。

もし私が役立つなら、私はaureliaイベントアグリゲーターを使ってイベントをディスパッチすることもできます。

PS:これが主観的だと感じる場合は、代わりに「方法」としてタイトルを読んでください。私の提案した方法は野生の推測であり、正しいとは思わない。

+0

あなたが求めていることは明確ではありません。このインターフェイスにコールバック関数への参照を含める方法を尋ねていますか? –

+0

実装する必要はない(=>インタフェースに配置しない)コンベンショナルメソッドを提供することができますが、その機能を実装する必要があります。アウレリア成分のライフサイクル法(添付、結合など)に匹敵する。それらは必要ではありませんが、コンポーネントがアタッチされる前に何かしたい場合、メソッドを実装する必要があります。 –

+0

@NitzanTomer申し訳ありませんが、これが不明な場合。 Angular 2コンポーネントを例にしてみましょう。コンポーネントクラスを作成することはできますが、コンポーネントが破棄されたときには何かを行う必要があります。 Angular 2ウェイでは、コンポーネントに_OnDestroy_インターフェイスを実装し、そのクラスに対してngOnDestroy()メソッドを実装します。 私の問題は似ています。ユーザーがメニューの[アカウントのキャンセル]ボタンをクリックすると、確認可能なダイアログが表示されます。 1/2 – marekpw

答えて

0

私は、インターフェイス上で、次の構文と一緒に行くことになった:

onClick?: (e: MyEvent) => void

Nitzan Tomerに感謝のコメントインチ