繁体   English   中英

Angular 反应式 Forms 无法获取 formControlName 以在 ngFor 模板循环上设置值

[英]Angular Reactive Forms unable to get formControlName to set value on an ngFor template loop

我正在使用 Angular 反应式 forms 并且我正在尝试获取表单控件值以在下拉列表中设置为默认值。 如果我不在模板代码中使用 *ngFor 循环,我可以让它工作。 但是,我需要使用它,因为标签中有很多选项。

    <select formControlName="staffName">
       <option>Bob Jason</option>
       <option>Sally Reel</option>
       <option>Jack Jones</option>  
       <option>George Smith</option>  
       <option>Harry Lake</option>  
    </select>

但是,如果我使用下面的代码,它就不起作用

     <select formControlName="staffName">
        <option *ngFor="let StaffMemberModel of StaffMemberModels">
            {{StaffMemberModel.firstName}} {{StaffMemberModel.lastName}}
        </option>      
     </select>

StaffMemberModel 是一个包含 id、firstName 和 lastName 的数组,如下所示。

在此处输入图像描述

它输出以下内容。 但是,它只显示下拉列表中的第一个选项,此时它应该显示在上一页中选择的工作人员。

在此处输入图像描述

您可以通过传递[value]="StaffMemberModel.id"标志来做到这一点。

它可以是名字、姓氏、ID,任何你想要的。

<form [formGroup]="form">
  <select formControlName="staffName">
    <option *ngFor="let StaffMemberModel of StaffMemberModels"
    [value]="StaffMemberModel.id" > 
      {{ StaffMemberModel.firstName }} {{ StaffMemberModel.lastName }}</option>
  </select>
</form>

如果您想看到它的实际效果: https://stackblitz.com/edit/angular-w8bjyl

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM