マウスのクリック時にdivをハイライトする方法を理解しようとしています。私が(onmouseup)(onmouseclickまたはonmouseClickを認識しない)場合、すべての項目が強調表示されています。以下に、ディレクティブコードを示します。 Here is the Plnkr Codeクリックしてdivを強調表示する角度のハイライト指示
import {Directive, ElementRef} from "@angular/core";
@Directive({
selector:'[highlight]',
host: {
'(mouseup)': 'onMouseUp()',
}
// host: {
// '(mouseenter)': 'onMouseEnter()',
// '(mouseleave)': 'onMouseLeave()',
// }
})
export class Highlight{
private el:ElementRef;
constructor(el:ElementRef){
this.el = el;
}
onMouseEnter(){
console.log(this.el);
this.el.nativeElement.style.backgroundColor = 'white';
this.el.nativeElement.style.backgroundColor = '#D1D301';
}
onMouseLeave(){
this.el.nativeElement.style.backgroundColor = 'black';
this.el.nativeElement.style.backgroundColor = 'white';
}
onMouseUp(){
console.log(this.el);
this.el.nativeElement.style.backgroundColor = 'white';
this.el.nativeElement.style.backgroundColor = '#D1D301';
}
}
ユーザーが四角をクリックすると、他のすべての人が白に戻って欲しいのですか? – acdcjunior
これはあなたがそれを構造化したやり方をするのは難しいでしょう。ディレクティブはDOMをトラバースし、DOM構造についての前提を設定する必要があります(うまくいかない)。リスト全体に対して1つのディレクティブの代わりに、各アイテムにディレクティブを追加し、マウスがクリックされたときにイベントを送出する(Outputプロパティを使用する)ようにするのがよいでしょう。次に、親コンポーネントはそのリストを反復し、ディレクティブ上のパブリックメソッドを呼び出して、各アイテムのハイライトを解除します。次に、ディレクティブ上でpublicメソッドを呼び出して、そのメソッドを強調表示します。タブの実装と同様です。 –
ng-classを参照してください – WesW