获取 angular primeng 中多个复选框的值
Get value of multiple checkbox in angular primeng
- 想从多个复选框中获取值。
- 每一行都包含用户名和授予用户的权限,即读、写。
- 在下面的代码中,我试图将权限授予用户,即读、写。
- 因为 UI 我正在使用 primeng 复选框。
- 检查需要将读取的值添加到用户数组中。
app.component.ts
import { Component, OnInit } from '@angular/core';
import { supportsWebAnimations } from '@angular/animations/browser/src/render/web_animations/web_animations_driver';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {
users: Array<any>;
permissions: Array<any> = [];
ngOnInit(){
this.users = [
{id: 1, name: 'Sam', permission: []},
{id: 2, name: 'Adam', permission: []},
{id: 3, name: 'Chris', permission: []}
]
}
}
app.component.html
<h3 class="first">Permission</h3>
<div class="ui-g" style="margin-bottom:10px; ">
<div class="ui-g-2"><b>Name</b></div>
<div class="ui-g-2"><b>Read</b></div>
<div class="ui-g-2"><b>Write</b></div>
</div>
<div class="ui-g" style="margin-bottom:10px;" *ngFor ="let user of users; let i = index">
<div class="ui-g-2">{{user.name}}</div>
<div class="ui-g-2"><p-checkbox name="group[i]" value="Read" [(ngModel)]="permissions[i]" inputId="R"></p-checkbox></div>
<div class="ui-g-2"><p-checkbox name="group[i]" value="Write" [(ngModel)]="permissions[i]" inputId="W"></p-checkbox></div>
</div>
您必须在模型中包含这些 read/write 标志并将它们连接到正确的复选框。例如
this.users = [
{id: 1, name: 'Sam', permission: {read:false,write:false}},
{id: 2, name: 'Adam', permission: {read:false,write:false}},
{id: 3, name: 'Chris', permission: {read:false,write:false}}
]
和
<div class="ui-g" style="margin-bottom:10px;" *ngFor ="let user of users; let i = index">
<div class="ui-g-2">{{user.name}}</div>
<div class="ui-g-2"><p-checkbox [(ngModel)]="user.permissions.read" inputId="R"></p-checkbox></div>
<div class="ui-g-2"><p-checkbox [(ngModel)]="user.permissions.write" inputId="W"></p-checkbox></div>
</div>
模型中的值将根据复选框状态相应地切换为 true/false。至少我会这样做。
您可以维护一个 permission
对象并将其绑定到您的复选框,而不是维护一个 permission
数组。
在那种情况下就不需要维护索引了。
您的代码将是这样的:
import { Component, OnInit } from '@angular/core';
import { supportsWebAnimations } from '@angular/animations/browser/src/render/web_animations/web_animations_driver';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
users: Array<any>;
permissions: Array<any> = [];
ngOnInit(){
this.users = [
{id: 1, name: 'Sam', permission: { read: true, write: true}},
{id: 2, name: 'Adam', permission: { read: false, write: true}},
{id: 3, name: 'Chris', permission: { write: true, read: false}}
]
}
}
还有你的HTML:
<h3 class="first">Permission</h3>
<div class="ui-g" style="margin-bottom:10px; ">
<div class="ui-g-2"><b>Name</b></div>
<div class="ui-g-2"><b>Read</b></div>
<div class="ui-g-2"><b>Write</b></div>
</div>
<div class="ui-g" style="margin-bottom:10px;" *ngFor ="let user of users; let i = index">
<div class="ui-g-2">{{user.name}}</div>
<div class="ui-g-2"><p-checkbox type="checkbox" name="group[i]" value="Read" [(ngModel)]="user.permission.read" inputId="R"></p-checkbox></div>
<div class="ui-g-2"><p-checkbox type="checkbox" name="group[i]" value="Write" [(ngModel)]="user.permission.write" inputId="W"></p-checkbox></div>
</div>
与 PrimeNG
您需要添加
binary="true"
属性到您的复选框
你可以在这里看到demo
- 想从多个复选框中获取值。
- 每一行都包含用户名和授予用户的权限,即读、写。
- 在下面的代码中,我试图将权限授予用户,即读、写。
- 因为 UI 我正在使用 primeng 复选框。
- 检查需要将读取的值添加到用户数组中。
app.component.ts
import { Component, OnInit } from '@angular/core';
import { supportsWebAnimations } from '@angular/animations/browser/src/render/web_animations/web_animations_driver';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {
users: Array<any>;
permissions: Array<any> = [];
ngOnInit(){
this.users = [
{id: 1, name: 'Sam', permission: []},
{id: 2, name: 'Adam', permission: []},
{id: 3, name: 'Chris', permission: []}
]
}
}
app.component.html
<h3 class="first">Permission</h3>
<div class="ui-g" style="margin-bottom:10px; ">
<div class="ui-g-2"><b>Name</b></div>
<div class="ui-g-2"><b>Read</b></div>
<div class="ui-g-2"><b>Write</b></div>
</div>
<div class="ui-g" style="margin-bottom:10px;" *ngFor ="let user of users; let i = index">
<div class="ui-g-2">{{user.name}}</div>
<div class="ui-g-2"><p-checkbox name="group[i]" value="Read" [(ngModel)]="permissions[i]" inputId="R"></p-checkbox></div>
<div class="ui-g-2"><p-checkbox name="group[i]" value="Write" [(ngModel)]="permissions[i]" inputId="W"></p-checkbox></div>
</div>
您必须在模型中包含这些 read/write 标志并将它们连接到正确的复选框。例如
this.users = [
{id: 1, name: 'Sam', permission: {read:false,write:false}},
{id: 2, name: 'Adam', permission: {read:false,write:false}},
{id: 3, name: 'Chris', permission: {read:false,write:false}}
]
和
<div class="ui-g" style="margin-bottom:10px;" *ngFor ="let user of users; let i = index">
<div class="ui-g-2">{{user.name}}</div>
<div class="ui-g-2"><p-checkbox [(ngModel)]="user.permissions.read" inputId="R"></p-checkbox></div>
<div class="ui-g-2"><p-checkbox [(ngModel)]="user.permissions.write" inputId="W"></p-checkbox></div>
</div>
模型中的值将根据复选框状态相应地切换为 true/false。至少我会这样做。
您可以维护一个 permission
对象并将其绑定到您的复选框,而不是维护一个 permission
数组。
在那种情况下就不需要维护索引了。
您的代码将是这样的:
import { Component, OnInit } from '@angular/core';
import { supportsWebAnimations } from '@angular/animations/browser/src/render/web_animations/web_animations_driver';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
users: Array<any>;
permissions: Array<any> = [];
ngOnInit(){
this.users = [
{id: 1, name: 'Sam', permission: { read: true, write: true}},
{id: 2, name: 'Adam', permission: { read: false, write: true}},
{id: 3, name: 'Chris', permission: { write: true, read: false}}
]
}
}
还有你的HTML:
<h3 class="first">Permission</h3>
<div class="ui-g" style="margin-bottom:10px; ">
<div class="ui-g-2"><b>Name</b></div>
<div class="ui-g-2"><b>Read</b></div>
<div class="ui-g-2"><b>Write</b></div>
</div>
<div class="ui-g" style="margin-bottom:10px;" *ngFor ="let user of users; let i = index">
<div class="ui-g-2">{{user.name}}</div>
<div class="ui-g-2"><p-checkbox type="checkbox" name="group[i]" value="Read" [(ngModel)]="user.permission.read" inputId="R"></p-checkbox></div>
<div class="ui-g-2"><p-checkbox type="checkbox" name="group[i]" value="Write" [(ngModel)]="user.permission.write" inputId="W"></p-checkbox></div>
</div>
与 PrimeNG
您需要添加
binary="true"
属性到您的复选框
你可以在这里看到demo