簡體   English   中英

獲取Angular中的復選框名稱,值和選中狀態

[英]Get checkbox name, value and checked state in Angular

我有以下4個復選框,它們是動態生成的。 在角度組件中,我想檢索復選框的“名稱”,“值”和“狀態”。

HTML:

<input type="checkbox" 
       name="automotive" 
       value="car" 
       ngModel 
       (ngModelChange)="filterResults(obj, $event)">

<input type="checkbox" 
       name="automotive" 
       value="truck" 
       ngModel 
       (ngModelChange)="filterResults(obj, $event)">

<input type="checkbox" 
       name="apparel" 
       value="shirts" 
       ngModel 
       (ngModelChange)="filterResults(obj, $event)">

<input type="checkbox" 
       name="apparel" 
       value="pants" 
       ngModel 
       (ngModelChange)="filterResults(obj, $event)">

零件:

filterResults(obj: any, isChecked: boolean){
  console.log(obj);
  console.log(isChecked); // {}, true || false
} 

我可以獲取復選框的狀態,但不能獲取名稱和值。 打印到控制台后, obj是未定義的。 我想根據復選框的名稱和值將過濾器應用於數據集。

我如何獲得已選中復選框的名稱和值,所以可以做到這一點?

最好了解您正在使用哪個版本。 這將是其中一種方法:

<input type="checkbox" 
   name="automotive" 
   value="car" (change)="checkValues($event)" 
   ngModel 
   (ngModelChange)="filterResults(obj, $event)">

並在相應的.ts文件中

checkValues(e: any) { console.log(e) }

您必須在source屬性中找到要查找的所有屬性。

您可以將ngModelChange事件替換為click事件,在該event中將event對象傳遞為

(change)="GetStats($event)"

在組件方法中,嘗試獲取名稱,值和檢查狀態為

GetStats(event: Event) {
    console.log(event.target.name, event.target.value, event.target.checked);
}

在stackblitz中查看更多信息https://stackblitz.com/edit/angular-get-dynamic-checkbox-attributes

您可以向每個復選框添加動態ID:

<input type="checkbox" [attr.id]="uniqueIdHere" ... >

然后像這樣訪問您的復選框屬性:

var checkboxValue = (<HTMLInputElement>document.getElementById("uniqueIdHere")).value;

如果您的復選框是通過循環生成的,則可以將索引用作[attr.id]

我認為您可以做到這一點:

<input type="checkbox" 
       name="automotive" 
       value="car" 
       ngModel 
       (ngModelChange)="filterResults({name: 'automotive', value: 'car'}, $event)">

<input type="checkbox" 
       name="automotive" 
       value="truck" 
       ngModel 
       (ngModelChange)="filterResults({name: 'automotive', value: 'truck'}, $event)">

<input type="checkbox" 
       name="apparel" 
       value="shirts" 
       ngModel 
       (ngModelChange)="filterResults({name: 'apparel', value: 'shirts'}, $event)">

<input type="checkbox" 
       name="apparel" 
       value="pants" 
       ngModel 
       (ngModelChange)="filterResults({name: 'apparel', value: 'pants'}, $event)">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM