2017-12-15 7 views
1

別のディレクティブにplugin2でのディレクティブ 1をパラメータ(プラグイン)としてディレクティブを指定します、plugin3など)、ホストディレクティブのコンテナに、パラメータとして表示されるプラグインディレクティブを指定または変更するようにします。、plugin1、たとえば(複数の可能な「プラグイン」ディレクティブのうち、その中に私は、「プラグイン」<del>を表示したい、私は「ホスト」ディレクティブを持って

これは、 "ホスト"ディレクティブが何も知らずに角度で達成できますか?どのディレクティブが表示されていますか?ある意味では、ui-routerのように、子ビューのプレースホルダを保持し、ビューを動的に提供します。しかし、私はこの柔軟性の指針を求めています。例えば

<div> 
    <host plugin="plugin1 plugin1-param-1 plugin1-param-2"></host> 
</div> 
<div> 
    <host plugin="plugin2 plugin2-param-1 plugin2-param-2"></host> 
</div> 
+0

なぜ 'host'コンポーネントを' plugin'ディレクティブで作成してみませんか?それは同じように動作しますが、この方法では、私はあなたがそれを行うことができると確信しています – trichetriche

+0

@trichetriche "_with_ a指令を作成する"とはどういう意味ですか? –

+0

さて、コンポーネント 'ng g my myComponent'を作成し、次に' ng g d myDirective'を作成し、ディレクティブセレクタで、コンポーネントでのみ動作し、あなたが望むことをしてください! – trichetriche

答えて

0

私はJava/.Netバックグラウンドから来ているので、私はランタイムの "プラグアンドプレイ"パターンを適用しようとしていました。私はトランジションが上記の私の質問に対する答えだと思います。役に立つリンクがあります: http://teropa.info/blog/2015/06/09/transclusion.html

0

はい。プラグインディレクティブにホストディレクティブを挿入できます。

構成を簡単にするために、入力の名前をディレクティブの属性名と正確に同じにすることができます。

@Directive({selector: '[plugin]'}) 
class Plugin { 
    @Input('plugin') config: any 
    constructor(@Host() private host: HostCmp) {} 
} 

ここでthis.host介しHostCmpインスタンスへのアクセス権を持つと設定は、専用としてhost[plugin]を使用して、セレクタに基づいて、特定のホストへのプラグインの使用ダウン​​範囲をさらにできthis.config

であろうセレクタ。

+0

ありがとう、私の質問は混乱していたと思うので、質問を更新しました。私の理解によれば、あなたが提供した応答は、1つのプラグインを私のホスト指令にリンクします。しかし、実行時にのみホストディレクティブで使用するプラグインを決定したいと思います。 – user2549686

+0

誤ったアプローチ。 Angularはコードを静的に解析しています。実行時にその動作を判断する場合は、入力パラメータを使用して構成できる単一の指令を作成する必要があります。 –

関連する問題