首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递数组--用户选择的

传递数组--用户选择的
EN

Stack Overflow用户
提问于 2020-12-26 07:15:59
回答 2查看 68关注 0票数 0

我想传递用户检查过的数据。我现在的问题..。一切都过去了..。这是我的演示代码和stackblitz

代码语言:javascript
复制
<div class="row" *ngFor="let item of modules; let i = index;">
    <div class="col-md-1 align-center">{{i+1}}</div>
    <div class="col-md-5">
        <input type="text" class="form-control" [(ngModel)]="modules[i].module_name" value="{{modules[i].module_name}}" disabled>
</div>

<div class="col-md-2">
<input type="radio" class="form-control" [checked]="modules[i].action.read" (change)="modules[i].action.read"  name="access_{{modules[i].company_id}}" id="package-1">
<label for="package-1">Read</label>
 </div>

<div class="col-md-2">
<input type="radio" [checked]="modules[i].action.write" (change)="modules[i].action.write" class="form-control" name="access_{{modules[i].company_id}}" id="package-2">
<label for="package-2">write</label>
 </div>
 <button (click)="test(item)">test</button>


</div>

组件

代码语言:javascript
复制
 test(val){
    console.log(val)
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-26 09:42:16

主要有两个问题:

  1. 您需要在for -循环中为label和id属性创建一个唯一的id。
  2. 接下来,创建一个方法来切换每个模块的读/写属性。这确保了如果设置了读,那么写将是假的,反之亦然。

.ts

代码语言:javascript
复制
toggleReadWrite(module: any, isRead: boolean) {
   if (isRead) {
     module.action.read = !module.action.read;
     module.action.write = false;
   } else {
     module.action.write = !module.action.write;
     module.action.read = false;
   }
}

.html

代码语言:javascript
复制
<div class="row" *ngFor="let item of modules; let i = index;">
    <div class="col-md-1 align-center">{{i+1}}</div>
    <div class="col-md-5">
        <input type="text" class="form-control" [(ngModel)]="modules[i].module_name" 
               value="{{modules[i].module_name}}" disabled>
    </div>

    <div class="col-md-2">
        <input type="radio" class="form-control" [checked]="modules[i].action.read"
            (change)="toggleReadWrite(modules[i], true)" 
            name="access_{{modules[i].company_id}}" id="package+1+{{i}}">
        <label for="package+1+{{i}}">Read</label>
    </div>

    <div class="col-md-2">
        <input type="radio" [checked]="modules[i].action.write"
            (change)="toggleReadWrite(modules[i], false)" class="form-control"
            name="access_{{modules[i].company_id}}" id="package+2+{{i}}">
        <label for="package+2+{{i}}">write</label>
    </div>

    <button (click)="test(item)">test</button>
</div>
票数 4
EN

Stack Overflow用户

发布于 2020-12-26 07:39:03

首先,您应该使单选按钮的id在循环过程中成为唯一的。

id="package-1{{i}}"

代码语言:javascript
复制
<input type="radio" class="form-control" [checked]="modules[i].action.read" (change)="modules[i].action.read"  name="access_{{modules[i].company_id}}" 
id="package-1{{i}}">

<label for="package-1{{i}}">Read</label>

另外,我不知道什么是你想要的输出,请解释更多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65454306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档