私は、私のAngular 2アプリケーションで使用するカスタムディレクティブを、私のAngular 2アプリケーションのすべての異なるコンポーネントでコンテンツパネル(テンプレート内の一部のコンテンツホルダ)を閉じるために使用しました。このコードはコンポーネントごとに全く同じなので、一度定義してすべてのコンポーネントで使用できるディレクティブを書くことは理にかなっていると思いました。今、私はapp.component親コンポーネントに一度このディレクティブをインポートし、そして私は、すべての子コンポーネント全体でこのディレクティブを使用することができることができることを期待ディレクティブとコンポーネントをグローバルに使用する方法
import { Directive, ElementRef, HostListener, Injectable } from '@angular/core';
@Directive({
selector: '[myCloseContentPanel]'
})
export class CloseContentPanelDirective {
private el: HTMLElement;
constructor(el: ElementRef) {
this.el = el.nativeElement;
}
@HostListener('click') onMouseClick() {
this.el.style.display = 'none';
}
}
:これは私のディレクティブは次のようになります。これは悲しいことにうまくいきませんので、私はこのディレクティブを各コンポーネントで個別にインポートする必要があります。私は何か間違っているのですか?または、この動作は単純に不可能ですか?
ありがとうございます!答えは、アプリケーションのブートストラップファイルにこれを追加したときに機能します。ルートコンポーネントに追加したときではありません。私が理解しているように、ブートストラップファイルにそれを追加するのはベストプラクティスではありません。これが何であるか考えていますか? – hY8vVpf3tyR57Xib
実際に、私はまだプロバイダの[:] 'それを試していません。スタイルガイドが 'bootstrap()'を使用しないので、この方法でコードを投稿しました。代わりに 'directives:[]'に追加することができます。 –
ディレクティブとプロバイダが私のためにうまくいかず、ブートストラップが機能しませんでした。あなたの答えにこれを言えば、私はそれを受け入れるでしょう! – hY8vVpf3tyR57Xib