Angular - 单选按钮行被选中而不是唯一单选 ngFor primeng
Angular - Row of Radio Buttons Being Selected Instead of Unique Radio ngFor primeng
我正在完成一个项目,其中有 3 个选择,每个选择有 3 个不同的值。我正在使用 PrimeNG,并且这些单选按钮位于具有可扩展行的 table 中(尽管除了一些 UI 差异之外它应该没什么大不了的)。
值和按钮存储在 ngFor
中,因为有多个类别,其中按钮是一个选项。
我遇到的问题是,当您 select 1 个值时,整行会同时 selected。
我相信这一定与 ngFor
以及每个类别的数据如何 displayed/looped 有关。
每个“类别”都将是一个对象,其中适当的值是该对象的一部分。例如,“测试类别 1”的对象可能是:
{
Option1: 1,
Option2: 2,
Option3: 2
}
其中 0 表示“none”,1 表示“查看”,2 表示“编辑”。
这是我在 ng-template 中重复单选按钮的代码:
<ng-template pTemplate="rowexpansion" let-rowData let-columns="columns">
<tr>
<td [attr.colspan]="columns.length + 1">
<div class="perm-grid">
<div *ngFor="let item of rowData.permissions">
<h2 style="border-bottom: 1px solid #495057; padding-left: 5px">{{ item.name }}</h2>
<ul class="perm-list">
<li class="radio-grid">
<div class="radio-grid-row">
<div style="margin-left: 5px"></div>
<div>Option1</div>
<div>Option2</div>
<div>Option3</div>
</div>
<div class="radio-grid-row">
<div style="margin-left: 5px">None</div>
<p-radioButton name="permission1" [(ngModel)]="item[Option1]" value="0">
</p-radioButton>
<p-radioButton name="permission2" [(ngModel)]="item[Option2]" value="0">
</p-radioButton>
<p-radioButton name="permission3" [(ngModel)]="item[Option3]" value="0">
</p-radioButton>
</div>
<div class="radio-grid-row">
<div style="margin-left: 5px">View</div>
<p-radioButton name="permission1" [(ngModel)]="item[Option1]" value="1">
</p-radioButton>
<p-radioButton name="permission2" [(ngModel)]="item[Option2]" value="1">
</p-radioButton>
<p-radioButton name="permission3" [(ngModel)]="item[Option3]" value="1">
</p-radioButton>
</div>
<div class="radio-grid-row">
<div style="margin-left: 5px">Edit</div>
<p-radioButton name="permission1" [(ngModel)]="item[Option1]" value="2">
</p-radioButton>
<p-radioButton name="permission2" [(ngModel)]="item[Option2]" value="2">
</p-radioButton>
<p-radioButton name="permission3" [(ngModel)]="item[Option3]" value="2">
</p-radioButton>
</div>
</li>
</ul>
</div>
</div>
</td>
</tr>
</ng-template>
为简单起见,我将在 StackBlitz.
中提供其余代码
有谁知道为什么一次 select 编辑整行?以前,当我 select 编辑一个选项时,它不是整行,而是所有类别都具有相同的值。例如,如果我 select 在选项 2 中输入“查看”,这将反映在所有类别中。
看看你的选项变量值
Option1: string;
Option2: string;
Option3: string;
它们没有被初始化,即等于未定义。所以
item[Option1] == item[Option2] == item[undefined]
此代码必须正常工作:
Option1: string = 'Option1';
Option2: string = 'Option2';
Option3: string = 'Option3';
我正在完成一个项目,其中有 3 个选择,每个选择有 3 个不同的值。我正在使用 PrimeNG,并且这些单选按钮位于具有可扩展行的 table 中(尽管除了一些 UI 差异之外它应该没什么大不了的)。
值和按钮存储在 ngFor
中,因为有多个类别,其中按钮是一个选项。
我遇到的问题是,当您 select 1 个值时,整行会同时 selected。
我相信这一定与 ngFor
以及每个类别的数据如何 displayed/looped 有关。
每个“类别”都将是一个对象,其中适当的值是该对象的一部分。例如,“测试类别 1”的对象可能是:
{
Option1: 1,
Option2: 2,
Option3: 2
}
其中 0 表示“none”,1 表示“查看”,2 表示“编辑”。
这是我在 ng-template 中重复单选按钮的代码:
<ng-template pTemplate="rowexpansion" let-rowData let-columns="columns">
<tr>
<td [attr.colspan]="columns.length + 1">
<div class="perm-grid">
<div *ngFor="let item of rowData.permissions">
<h2 style="border-bottom: 1px solid #495057; padding-left: 5px">{{ item.name }}</h2>
<ul class="perm-list">
<li class="radio-grid">
<div class="radio-grid-row">
<div style="margin-left: 5px"></div>
<div>Option1</div>
<div>Option2</div>
<div>Option3</div>
</div>
<div class="radio-grid-row">
<div style="margin-left: 5px">None</div>
<p-radioButton name="permission1" [(ngModel)]="item[Option1]" value="0">
</p-radioButton>
<p-radioButton name="permission2" [(ngModel)]="item[Option2]" value="0">
</p-radioButton>
<p-radioButton name="permission3" [(ngModel)]="item[Option3]" value="0">
</p-radioButton>
</div>
<div class="radio-grid-row">
<div style="margin-left: 5px">View</div>
<p-radioButton name="permission1" [(ngModel)]="item[Option1]" value="1">
</p-radioButton>
<p-radioButton name="permission2" [(ngModel)]="item[Option2]" value="1">
</p-radioButton>
<p-radioButton name="permission3" [(ngModel)]="item[Option3]" value="1">
</p-radioButton>
</div>
<div class="radio-grid-row">
<div style="margin-left: 5px">Edit</div>
<p-radioButton name="permission1" [(ngModel)]="item[Option1]" value="2">
</p-radioButton>
<p-radioButton name="permission2" [(ngModel)]="item[Option2]" value="2">
</p-radioButton>
<p-radioButton name="permission3" [(ngModel)]="item[Option3]" value="2">
</p-radioButton>
</div>
</li>
</ul>
</div>
</div>
</td>
</tr>
</ng-template>
为简单起见,我将在 StackBlitz.
中提供其余代码有谁知道为什么一次 select 编辑整行?以前,当我 select 编辑一个选项时,它不是整行,而是所有类别都具有相同的值。例如,如果我 select 在选项 2 中输入“查看”,这将反映在所有类别中。
看看你的选项变量值
Option1: string;
Option2: string;
Option3: string;
它们没有被初始化,即等于未定义。所以
item[Option1] == item[Option2] == item[undefined]
此代码必须正常工作:
Option1: string = 'Option1';
Option2: string = 'Option2';
Option3: string = 'Option3';