【问题标题】:Need help building Reactive Form of Radio Input List需要帮助建立无线电输入列表的反应形式
【发布时间】:2019-08-16 09:51:28
【问题描述】:

我想用响应式表单来实现我的选择,我是新手,所以这是我的代码:

我已经尝试使用文档和提供的示例来实现它,但是没有运气并且破坏了我的单选单选按钮选择输入。我需要在我的 .ts 文件和我的 html sn-p 中实现什么来实现这一点?

这是我的工作 HTML 片段:

<div *ngFor="let stream of myList">
    <label>
      {{ stream.sys }}
    </label>
    <p *ngFor="let type of stream.types">
      <tr>
        <input type="radio" name="nav"/>
        {{ type.type.label }}
      </tr>
    </p>
  </div>

我正在使用输入类型单选循环遍历外部列表和内部列表。一切正常。现在我想将它实现为反应形式:

这是我想要的输出,例如:

Test
 o Number 1
Test2
 o Number 10
 o Number 20
Test3
 X Number 100

Value: Number 100 // or some id i have in my input data -> type.type.id

此导航需要选择一个项目,并且我想在我的列表中显示表单值作为第一步。

我尝试过这样的事情:

.html

<form [formGroup]="form">
  <div *ngFor="let stream of myList">
    <label>
      {{ stream.sys }}
    </label>
    <p *ngFor="let type of stream.types">
      <tr>
        <input type="radio" name="name" formControlName="name" />
        {{ type.type.label }}
      </tr>
    </p>
  </div>
</form>

<p>
    Value: {{ form.value | json}}
</p>

.ts

form: FormGroup;
constructor(private formBuilder: FormBuilder) {
  this.form = formBuilder.group({
    name: ['']
  });

【问题讨论】:

  • 您好,您的问题有点令人困惑。你说你希望它是一个单一的选择,但你仍然在你的例子中使用单选按钮。请你澄清一下?
  • @AndrewJuniorHoward 我的意思是所有单选按钮的完整表单,我猜单选有点令人困惑。我修改了它,我希望在我的完整列表中只选择一个。这适用于我上面的示例。我认为我的表单控件缺少值装饰器...?
  • 你有这方面的 stackblitz 例子吗?如果没有看到传入的数据,很难判断这一点。
  • 你需要给你的收音机一些价值 [value]="..." &lt;input type="radio" name="name" [value]="type.type.value" formControlName="name" /&gt;
  • @Eliseo 谢谢你的回答,我自己得到的有点不同,但你的更好。谢谢!

标签: javascript angular output angular-reactive-forms formbuilder


【解决方案1】:
  1. 您在 myList 上的循环。 formBuilder 应该包含一组组。每个组都应该包含一个“名称”控件。不应该需要“价值”。如果你想预设一些东西,你可以在表单生成器中设置它。
  2. 这与问题无关,但我不认为&lt;tr&gt;&lt;p&gt; 中不正确。相反,您可以只在 div 而不是段落上添加循环,然后删除 tablerow

【讨论】:

  • Jens,他正在使用单选按钮,它只是一个 FormControl,而不是一个表单数组
  • 表单内部还有一个外部循环 myList 。假设它的计数为 3。内部列表 stream.types 的计数为 5。html 模板将添加 15 个带有重复项的单选按钮输入。我只是猜测 out 循环 myList 是为了对应表单中的动态行。然后你需要一个包含一个组的数组。
  • 是的,我认为我的猜测是正确的。每个“行”{{ stream.sys }} 都有一个标签,因此它是一种动态形式。循环“表单行”。我们不知道 myList 包含多少“行”,因此您需要使用 FormArray。让响应式表单模型对应html模板
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-05
  • 1970-01-01
  • 2022-07-20
  • 1970-01-01
  • 2013-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多