あなたの質問は、テーブルのレコードの複数選択オプションを参照することがあります。
この場合、選択したオブジェクトをセットに格納できます。
public selectedRowSet: Set<MyObject> = new Set();
レコードが選択されるたびに、次の方法を使用してセットに追加します。
public setSelectedRow(obj: MyObject, event: MouseEvent) {
if(!event.shiftKey) {
selectedRowSet.clear();
}
selectedRowSet.add(obj);
}
次に、条件付き書式を追加することをお勧めします。あなたのビューの使用では
public isRowSelected(obj: MyObject): boolean
{
return selectedRowSet.has(obj);
}
:ここ
<tr *ngFor="let obj of myObjectCollection"
[class.someCssClass]="isRowSelected(obj)"
(click)="setSelectedRow(obj, $event);">
...
</tr>
REVIEW
は有用であるかもしれないいくつかの追加の調整、以下のとおりです。
- あなたが使用することを選択することができますシフトまたはCtrl
- このキーを押すと、レコードを選択解除することもできます。
私はこれが誰かにとって便利だと願っています。
public setSelectedRow(bo: Bo, event: MouseEvent) {
// support shift and control.
const add = event.shiftKey || event.ctrlKey;
if (!add) {
this.selectedRowSet.clear();
this.selectedRowSet.add(bo);
return;
}
// toggle selected record
if (this.selectedRowSet.has(bo)) {
this.selectedRowSet.delete(bo);
}
else {
this.selectedRowSet.add(bo);
}
}
どこで '$イベント 'を取りますか?それは未定義と言います。 – totoro
@dragon_cat: '(click)'バインディングで '$ event'を2番目の引数として渡し、' toggleSelected'にパラメータとして 'event'を追加することを確認してください。 –
素晴らしい答え。完全性のためだけに、パラメータのタイプについても言及した回答を追加しました。コーディングを使用する場合(ビジュアルスタジオコードなど)に便利です。 – bvdb