特定の要素の動作を変更するために、Angular2属性ディレクティブを記述しようとしています。具体的には、クリックハンドラを持つ特定の要素に属性を適用して、特定の条件でバインドされた関数が実行されないようにしたいとします。Angular2クリック処理を変更する命令
は、だから今、私は要素例えば:
<button (click)="onClick(param1, param2)"></button>
を持っているのonClickは、いくつかの仕事をして、ボタン要素をホストコンポーネントに宣言された関数です。
<button (click)="onClick(param1, param2)" online-only></button>
などのディレクティブがあります:私がやりたい何
のようなものを書きで
@Directive({
selector: '[online-only]',
})
export class OnlineOnlyDirective {
@HostListener('click', ['$event'])
onClick(e) {
if(someCondition){
e.preventDefault();
e.stopPropagation();
}
}
}
をしかしハンドラをクリックしますので、機会に私の指示を与えていない、最初に実行されますその実行を停止する。
私は自分のハンドラ([onlineClick] = "onClick")に置換(クリック)し、指示が適切だと思ったときに渡された関数を実行すると思っていましたが、onClick関数にパラメータを渡すことはできません見て少し怪しいです。
あなたはそのようなことをすることについて考えていますか?
イェップ、私の説明された第2のアプローチをはるかによく取る。呼び出す関数を渡す代わりにEventEmitterを使用すると、すべての違いが生じます。最初のアプローチはもっとエレガントですが、あなたが言ったようにangular2ではおそらくサポートされていません。 – masimplo
セレクタが '[オンラインのみ]'になっていたのかどうか不思議です。その指令に何が起こったのか把握しようとしています。 –
質問に「オンラインオンリー」が関係しているかどうか、またどのように関係しているのか分かりません –