Angular 4/5 form表单select初始化选中(简单string和复杂对象)

2023-11-15

1.问题场景

管理员增删改查中的“改”操作。管理员有性别(sex)和岗位(position)属性。其中,性别在后端为枚举类型,position为类。
要求进入管理员修改页时,自动选择性别,通过接口获取所有岗位,并自动选中当前管理员的岗位。

2.实现思路

在组件的ngOnInit()方法中,首先使用FormBuilder构建表单。然后分别通过管理员查询接口和岗位列表查询接口,获取当前管理员的信息和所有岗位信息:

ngOnInit() {

    const formBuilder = new FormBuilder();
    this.editForm = formBuilder.group({
        id: [''],
        sex: ['MALE'],
        position: ['', [Validators.required]]
    });

    this.jobPositionService.findAll().subscribe(
        data => {
            this.jobPositions = data.content;
        }
    );

    const id = this.routeInfo.snapshot.params['id'];
    if (id > 0) {
        this.operatorService.detail(id).subscribe(
            data => {
                this.editForm.reset({
                    id: data.id,
                    sex: data.sex,
                    position: data.position
                });
            }
        );
    }

}

通过<pre>{{editForm.value | json}}</pre>显示当前表单内容:
这里写图片描述

3.select选中问题

html代码:

<div class="form-group">
    <label for="sex" class="col-sm-2 control-label">性别</label>
    <div class="col-sm-10">
        <select name="sex" id="sex" formControlName="sex" class="form-control">
            <option value="MALE"></option>
            <option value="FEMALE"></option>
        </select>
    </div>
</div>
<div class="form-group">
    <label for="position" class="col-sm-2 control-label">岗位</label>
    <div class="col-sm-10">
        <select name="position" id="position" formControlName="position"
                class="form-control">
            <option *ngFor="let position of jobPositions" [ngValue]="position">
                {{position.desp}}
            </option>
        </select>
    </div>
</div>

select选中效果:
性别自动选中,但是岗位未选中
这里写图片描述

4.问题分析

通过测试,当前管理员的position和jobPositions的任一元素均不相等(===),虽然在后端数据库中为同一记录。

5.问题解决

参考Angular文档:SelectControlValueAccessor
这里写图片描述
需要提供自己的比较器:

<select name="position" id="position" formControlName="position"
        [compareWith]="compareFn"
        class="form-control">
    <option *ngFor="let position of jobPositions" [ngValue]="position">
        {{position.desp}}
    </option>
</select>

 compareFn(o1: Object, o2: Object): boolean {
     return o1 && o2 ? o1['id'] === o2['id'] : o1 === o2;
 }

这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 4/5 form表单select初始化选中(简单string和复杂对象) 的相关文章

  • 如何更改元素的 CSS 类并在单击时删除所有其他类

    我如何处理 AngularJS 2 中的一种情况 即单击一个元素需要更改其自己的样式 并且如果其他元素具有该样式 则需要将其删除 最好在一个函数中 如同Angular js 如何在单击时更改元素 css 类并删除所有其他元素 https s
  • Angular2 Router:将主题标签添加到 url

    我正在使用 Angular2 Seed 应用程序 您可以在官方仓库 https github com mgechev angular2 seed 正如您所看到的 这里我们导入了 angular2 router 并且我们使用它来创建应用程序的
  • Angular 2:使用正则表达式进行数字验证

    我正在尝试验证 IE 11 中的数字字段
  • 在 Angular 中获取当前路由路径名称的最简单方法是什么?

    我正在寻找一种获取当前路线的路径名称的好方法 这是我能找到的最简单的 this route snapshot firstChild url 0 path 有没有更好的办法 谢谢 谢谢大家的回答 这是我发现我必须做的 router event
  • 资产未考虑基本 href url - 未找到错误

    我刚刚在 Webform 项目中复制了 Angular 构建脚本 并将该项目部署到 IIS 中 注意 我只复制了脚本文件 没有单独部署在 IIS 中 我已将 Angular dist 文件夹复制到 Webform 项目的 Scripts 文
  • 使用 Nginx 在 Docker 容器内部署带有路由器的 Angular2

    我正在尝试部署一个使用框架的路由器功能的 Angular 2 但在 docker 容器内使用 nginx 为其提供服务时遇到一些问题 由 angular cli 构建的 Angular 应用程序具有如下文件结构 dist 08c42df75
  • 编辑角度材质的表格单元格填充

    当我使用开发人员工具检查该元素时 它显示零填充 但是当我查看它并将鼠标悬停在它上面时 它非常清楚地在单元格内具有填充 我不知道这是从哪里来的 并且设置td padding 0 important 什么也没做 感知到的填充是由以下原因引起的d
  • 如何在角度材料的下拉菜单中显示表单?

    我想展示一个简单的form 如下图所示 作为dropdown当icon被点击 我查看了角材料的组件列表 但找不到任何合适的组件 有menu https material angular io components menu overview
  • 如何调试超时等待异步 Angular 任务?无法在角度页面上找到元素

    编辑 请注意 在 ernst zwingli 的帮助下 我找到了问题的根源 因此 如果您遇到相同的错误 他指出的修复之一可能会帮助您 我的问题是量角器本身的一个已知问题 如果您认为这可能是您 我已经扩展了我的步骤 以在我最初的问题之后查明问
  • `[(ngModel)]` 与 `[(value)]`

    有什么区别
  • Angular 2 Material 2 日期选择器日期格式

    我不知道如何更改材料2日期选择器的日期格式 我已阅读文档 但我不明白我实际上需要做什么 datepicker默认提供的输出日期格式为f e 6 9 2017 我想要实现的目标是将格式更改为类似的格式9 Jun 2017或任何其他 文档htt
  • 原生元素聚焦功能不起作用

    我试图通过单击按钮自动聚焦在输入元素上 请参阅打字稿 ViewChild envFilter envFilter ElementRef onFilterSelect this envFilter nativeElement focus 在
  • Angular 2 获取当前路线

    所以我需要以某种方式检查我是否在主页上执行某些操作 而在其他页面上则不执行此操作 该组件也在所有页面上导入 如果我在主页上 如何检测该组件 Thanks 尝试这个 import Router from angular router expo
  • 如何在 Angular 项目中使用 Bootstrap?

    我开始我的第一次Angular应用程序和我的基本设置已完成 我怎样才能添加引导程序我的申请 如果您可以提供一个示例 那么这将是一个很大的帮助 如果您使用Angular CLI要生成新项目 还有另一种方法可以使 bootstrap 可访问角度
  • 如何将窗口注入到服务中?

    我正在用 TypeScript 编写一个 Angular 2 服务 它将利用localstorage 我想注入对浏览器的引用window对象到我的服务中 因为我不想引用任何全局变量 例如 Angular 1 x window 我怎么做 这目
  • Ionic 2 http.get() 问题

    我试着做一个http get 用这两个方法调用 First getResults return this http get http localhost api php toPromise then data gt data json 显示
  • 模块解析失败:意外的标记 (4:0)

    我正在尝试将 FULLCALENDAR 添加到我的 Angular v14 项目中 但在所有设置之后我突然面临这个错误 知道如何处理这个错误吗 包 json fullcalendar angular 5 11 0 fullcalendar
  • 使用 Angular 2 的前端“微服务”

    我正在为一些奇怪的情况寻找解决方案 让我们快速浏览一下 angular2 seed 项目 以便我可以更好地解释 https github com mgechev angular2 seed tree master src client ap
  • 收到错误 ../node_modules/rxjs/Rx"' 没有导出成员 'of'

    我正在从教程中学习新的角度 https angular io tutorial toh pt4 inject message service https angular io tutorial toh pt4 inject message
  • Angular 7测试重试当模拟http请求无法实际重试时

    我有以下尝试使用 OAuth 的拦截器refresh token每当获得任何 401 错误 响应时 基本上 刷新令牌是在第一个 401 请求上获取的 获取后 代码会等待 2 5 秒 在大多数情况下 第二个请求不会触发错误 但如果触发错误 令

随机推荐

  • 怎么把jfif改成png格式?三招送给你

    怎么把jfif改成png格式 在我们实际办公的过程中 其电脑网页存储的图片格式可能就是jfif格式 很多人对于jfif格式较为陌生 且在一些应用场景无法直接打开jfif格式的图片进行操作 编辑 对我们办公效率造成了一些影响 在此过程中 需要
  • Python、PHP和Java下的反序列化漏洞复现实例

    环境准备 这篇文章旨在用于网络安全学习 请勿进行任何非法行为 否则后果自负 python反序列化 p83 CTF夺旗 Python考点SST 反序列化 字符串 正经人 的博客 CSDN博客 php反序列化 p84 CTF夺旗 PHP弱类型
  • vue注册全局指令

    Vue directive focus 只调用一次 指令第一次绑定到元素时调用 在这里可以进行一次性的初始化设置 bind el binding console log bind el binding el触发的元素 console log
  • BeanFactoryAware

    在使用spring编程时 常常会遇到想根据bean的名称来获取相应的bean对象 这时候 就可以通过实现BeanFactoryAware来满足需求 代码很简单 Service public class BeanFactoryHelper i
  • 免费开源的高精度OCR文本提取,支持 100 多种语言、自动文本定位和脚本检测,几行代码即可实现离线使用(附源码)

    免费开源的高精度OCR文本提取 支持 100 多种语言 自动文本定位和脚本检测 几行代码即可实现离线使用 附源码 要从图像 照片中提取文本吗 是否刚刚拍了讲义的照片并想将其转换为文本 那么您将需要一个可以通过 OCR 光学字符识别 识别文本
  • uniapp引入图表ucharts方法

    Ucharts官网 https demo ucharts cn HBuilderX插件市场 https ext dcloud net cn 进入HBuilderX插件市场安装ucharts插件 进入ucharts官网找到需要的图表复制代码
  • 设计模式 简单工厂,策略模式,几种基本原则,Unity基础

    学习笔记 感受设计演变过程中蕴含的大智慧 体会乐于怒的程序人生中值得回味的一幕幕 设计模式来自于建筑领域 作为软件工程的一个分支 是在软件工程实践过程中 程序员们总结出的良好的编程方法 第一种模式 简单工厂模式 图片来源 点这里 上面是简单
  • RAM IP core(2)

    例化5种RAM IP core 1 单端口RAM Single port RAM RAM参数设置如上图所示 输入输出位宽都为8位 深度为16 采用一级输出寄存器 读写模式为no change 用COE文件对RAM进行初始化 关于COE文件的
  • BurpSuit在不同浏览器中配置代理

    BurpSuit配置代理 一 BurpSuit代理基础知识 通常情况下 用户通过浏览器浏览网页 通过浏览器 客户端 与服务器进行交互 既相互进行通信 若要想分析客户端和服务器交互的具体信息 就需要一个人当个中介 中间人 可以拦截两个人的信息
  • HTML5基础知识总结

    文章目录 01 HTML5基础 了解HTML5 新语义标签 网页布局结构标签及兼容处理 多媒体标签及属性介绍 新表单元素及属性 智能表单控件 表单属性 HTMl5中的API 获取页面元素及类名操作和自定义属性 文件读取 获取网络状态 获取地
  • sql union 列的字段不一样的时候

    转载于 https www cnblogs com shenzhichipingguo p 8916705 html
  • 69-Sqrt(x)

    题目 Implement int sqrt int x Compute and return the square root of x 分析 这个题里面是有许多陷阱的 首先确定用二分法处理这个问题 然而0 x之间的num的平方有可能会溢出
  • Apifox接口测试教程(一)接口测试的原理与工具

    前言 掌握了http协议 就掌握了接口测试 笔者在网络上看过不少接口测试教程 一上来就开始讲怎么操作工具 而不告诉读者为什么要这么操作 读者可能照猫画虎成功了 也可能操作失败了但不知为何出错 因此 本文作为接口测试的入门第一课首先会给大家了
  • 静态代码分析工具(一)—Scitools Understand

    一 概述 Understand是一个用来进行静态的软件分析 软件度量 软件可视化的工具 二 软件使用 1 安装 安装的是Understand 5 1 安装及另起可用网上很多资源 2 新建工程 创建工程名称 路径 选择语言 注意 在C C 后
  • (cLion、RubyMine、PyCharm、WebStorm、PhpStorm、Appcode、Clion、Idea) 万能破解,获取自己的注冊码...

    听说cLion的ide编写c c 很的棒 今天下载了一个仅仅有30天的使用时间 作为程序猿破解它 下载破解文件 点击下载 password 7biu 解压压缩包 然后打开命令行 cd 到解压文件夹 运行例如以下命令 java jar bui
  • HTTP协议初探

    发现网络协议的知识对后台开发人员来说 还是非常重要的 所以特地去了解了以下 并作学习笔记 方便自己查阅 HTTP协议详解 HTTP就是一个基于应用层的通信规范 双方要进行通信 大家都要遵守一个规范 HTTP协议 HTTP协议从WWW服务器传
  • 数值计算 --- 三次样条函数插值(Cubic spline function interpolation)

    三次样条函数插值 Cubic spline function interpolation Part I 插值 预备知识 什么是插值 已知部分离散的数据 但不知道满足这些数据的函数表达式 插值 和拟合 都是为了找到对应的函数表达式 区别在于
  • Python 积累总结

    for i j in DataFrame 遇到的问题 for i j in new data groupby by embryo id company id if j shape 0 2 relationshipdata relations
  • Android中Log信息的输出方法

    共两篇文章 第一篇讲述了如何在程序中输出Log信息 第二篇详细的分析了Log信息的输出机制 下面是第一篇 转自 http blog 163 com binghaitao 126 blog static 3383532520099309366
  • Angular 4/5 form表单select初始化选中(简单string和复杂对象)

    1 问题场景 管理员增删改查中的 改 操作 管理员有性别 sex 和岗位 position 属性 其中 性别在后端为枚举类型 position为类 要求进入管理员修改页时 自动选择性别 通过接口获取所有岗位 并自动选中当前管理员的岗位 2