2

Iは異なるレイアウト角度> = 2ため(日付ピッカーなど)UIコンポーネントを作成したいです。たとえば:NG-ブートストラップと角度材料2複数のレイアウト

のための別の1のための1つの私は、この中で考えていた:

<div *ngIf="template === 1"> Bootstrap </div> 
<div *ngIf="template === 2"> Angular Material </div> 

だけでなく、これは醜いソリューションですが、私はそれを考えていませんng-bootstrapとmaterial2の間に矛盾があるために動作します。

もう一つの解決策は、2つの異なるコンポーネントを作成するには、次のようになります。

<my-ng-bootstrap-component> Bootstrap </my-ng-bootstrap-component> 
<my-material2-component> Angular Material </my-material2-component> 

しかし、これは私が必要なものではありません。これは、コンポーネントのユーザーにとって非常に混乱するためです。

アイデア?

編集:また、それらの間でいくつかのロジックを共有する必要があります。おそらく継承?事前に

おかげ

+0

いいと読める<ui-component material></ui-component>または<ui-component bootstrap></ui-component>だろう各スタイルフレームワークに必要なクラス/コンポーネント/関数を適用します。そして、実装は素晴らしく読みやすい ''または ''になります。 – filoxo

+0

@filoxo属性ディレクティブにテンプレートを追加できますか? – Alex

+0

いいえ。ディレクティブをテンプレートレスコンポーネントと考えてください。しかし、これを使用して、ホストに戻すことができるコンポーネントを動的に作成することができます。私が見てきたこの良い例は、[Angular Material tooltip](https://github.com/angular/material2/blob/master/src/lib/tooltip/tooltip.ts)です。それがあまりにも困難または不必要と思われる場合、上記は単にコンポーネント上の '@ Input'sである可能性があります。 – filoxo

答えて

0
@filoxoから

ベストの答えが、彼は彼のコメントから

コピー彼の答えを削除:それは単にクラス/コンポーネントを適用するかもしれない属性ディレクティブのように聞こえる

/各スタイルフレームワークに必要な機能そして、実装は、それは単に多分[属性ディレクティブ](https://angular.io/docs/ts/latest/guide/attribute-directives.html)のように聞こえる

関連する問題