Angular Material md-select 以异步方式加载选项

2023-12-30

我需要异步加载选择的选项( 通过服务),使用 Angular Materialmd-select成分。

事实上,我用的是click加载数据的事件。它有效,但我需要单击选择两次才能显示选项。这是一个问题。

预期的行为如下所示link https://codepen.io/theShadow89/pen/OOVXWw(AngularJs 材料)

实际行为如下所示link https://stackblitz.com/edit/angular-material2-select-load-values-async?file=app/food.service.ts.

是否支持异步选项加载md-select?


您需要单击两次的原因是因为当您第一次单击时,选择控件中没有选项,因此它不会尝试打开面板。然后,您的异步方法将选项加载到 DOM 中,下次单击时它将打开。

为了解决这个问题,您必须始终包含至少一个<mat-option>在你的<mat-select>。您可以添加禁用的<mat-option> with a <mat-spinner>例如,显示数据正在加载。

这是最简单的例子。 https://stackblitz.com/edit/angular-mat-select-deferred-loading-simple?file=app%2Fselect-deferred-example.ts 这不是最好的方法......见下文。

但是,这仍然使用点击事件,这不是最好的方法。如果你把点击事件放在<mat-select>在某些地方,您可以单击控件,但即使下拉面板仍然打开,您的单击事件也不会触发(例如浮动标签区域)。您可以将点击事件放在<mat-form-field>但随后会有一些地方可以单击并触发单击事件,但下拉面板不会打开(例如提示/错误文本区域)。在这两种情况下,您都会失去键盘支持。

我建议使用<mat-select> openChanged事件而不是点击事件。这也有其自身的怪癖,但它们是可以管理的。

这是使用 openChanged 事件的示例 https://stackblitz.com/edit/angular-mat-select-deferred-loading?file=app%2Fselect-deferred-example.ts. 我还使该组件整体更加强大。

我还制作了一个使用占位符元素来显示微调器的版本,而不是使用禁用的垫选项。 https://stackblitz.com/edit/angular-mat-select-deferred-loading-spinner-placeholder?file=app%2Fselect-deferred-example.ts 这需要关闭视图封装。

Note:在我的示例中,该服务可以根据情况返回不同的数据。为了模拟这一点,我的假服务会跟踪您发送的请求数量并相应地更改返回的选项。所以我必须将选项列表设置回空并清除formControl每次打开列表时的值。我在清除之前保存所选值formControl这样,如果服务返回包含相同项目的列表,我可以自动重新选择该值。如果您只需要加载选项一次,那么您需要稍微修改一下代码,以便仅在用户第一次打开选择时加载选项。

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

Angular Material md-select 以异步方式加载选项 的相关文章

  • 调整添加的绘制组件的大小和奇怪的摆动行为

    这个问题困扰了我好几天 我正在制作一个特殊的绘画程序 我制作了一个 JPanel 并添加了使用 Paint 方法绘制的自定义 jComponent 问题是 每当我调整窗口大小时 所有添加的组件都会 消失 或者只是不绘制 因此我最终会得到一个
  • 仅当显式选择行时才关闭 ui-bootstrap typeahead

    我创建了这个jsBin http jsbin com livuqafe 2 edit来证明我遇到的问题 如果您转到此处 请尝试输入 五 并继续 你的自然反应是输入 五 然后按 Tab 如果你想要 五百 你可以向下箭头一次 但是 在这种情况下
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容
  • MySQL 查询计算上个月

    我想计算上个月的订单总额 我收到了从当前日期获取当月数据的查询 SELECT SUM goods total AS Total Amount FROM orders WHERE order placed date gt date sub c
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供
  • PrimeFaces 对话框参考父级

    我有一个 xhtml 页面 显示带有条目的数据表 我还有一个用于插入新条目的按钮 该按钮显示一个包含表单的对话框 插入表格用作
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data
  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使
  • 如何修复:“无法解析类型 java.lang.CharSequence。它是从所需的 .class 文件间接引用的”消息? [复制]

    这个问题在这里已经有答案了 我正在尝试使用这个字符串 amountStr amountStr replace replace replace 但我收到一条错误消息 我知道我收到的错误消息是因为我刚刚发布的字符串已过时 所以我想知道该字符串的
  • 如何在 OSX 上安装 LaTeX .sty 文件?

    我设置了一个 LaTeX 项目 tex documents some file tex support todonotes sty where some file tex uses todonotes usepackage colorinl
  • Android 材料芯片组件崩溃应用程序。无法膨胀 xml

    Tried Chip来自两个支持库的组件 com google android support design 28 0 0 rc01和材料 com google android material material 1 0 0 rc01 堆栈
  • 禁用允许文本选择的

    残疾人可以吗
  • 探查器模板可以迁移到较新版本的 SQL Profiler 吗?

    是否可以将 Profiler 模板迁移到较新版本的 SQL Server 就我而言 我想将 SQL 2008 模板带到 2012 年 我尝试过 1 直接文件复制和 2 导出 导入 在这两种情况下 旧模板都会运行 但无法修改 修改后会出现以下

随机推荐

  • 事件处理程序为空

    我正在尝试从用户控件引发单击事件并在包含页面上处理它 我遇到的问题是 当我单击用户控件上的按钮 imgstep1 时 imgstep1 click 事件后面的代码会触发 但 btnHandler 事件始终为空 因此它不会调用父事件 对此的任
  • C# 与 C++ 等效的空合并运算符

    C 空合并运算符是否有 C 等效项 我在代码中做了太多空检查 因此正在寻找一种减少空代码量的方法 我刚刚发现这个 这 运算符又名空合并运算符 http dev tricks net the operator aka null coalesc
  • 如果 C 有指针,为什么还需要数组?

    如果我们可以使用指针malloc创建和使用数组 为什么C中存在数组类型 如果我们可以使用指针来代替 那不是没有必要了吗 数组比动态内存分配更快 数组在 编译时 分配 而 malloc 在运行时分配 分配需要时间 另外 C 并没有强制要求ma
  • Java 8方法引用:提供能够提供参数化结果的Supplier

    我想用 java util Optional orElseThrow 具有要求构造函数参数的异常类型 像这样的事情 orElseThrow MyException new someArgument obviously NOT working
  • 从 C 文本文件中读取 int 值

    我有一个包含以下三行的文本文件 12 5 6 4 2 7 9 我可以使用fscanf函数读取前 3 个值并将它们存储在 3 个变量中 但我无法阅读其余部分 我尝试使用fseek函数 但它仅适用于二进制文件 请帮助我将所有值存储在整数变量中
  • 在 C# 中使用“dynamic”关键字无法编译

    我正在尝试编译一段 C 代码 其中包含dynamic关键词 我需要这个关键字来使用ironpython 但是 它无法编译 抱怨 error CS1980 Dynamic keyword requires System Runtime Com
  • 什么是 Nak 限制?

    我试图了解 Android Open Accessory API 如何与 Arduino ADK 板配合使用 我已经能够发送和接收信息 但我只想知道一切是如何工作的 我得到了这个函数的描述 int AndroidAccessory read
  • 错误测试应用内结算示例 - Dungeons

    我正在尝试获取应用程序内计费示例地下城 我有一个带有我的公共 ID 的草稿应用程序 并且我已经发布了非托管项目 potion 001 我在设备上使用与注册商家帐户相同的谷歌帐户 静态测试效果很好 但是当我尝试购买药水时 我得到 DEBUG
  • VBA中的数字上下控制

    vba 中是否有内置的数字 updown 控件 或者我们是否需要创建一个类似的控件 如果有这样的控件那么我们可以使用哪些事件 请建议 您可以使用SpinButton1对此进行控制 SNAPSHOT CODE 您可以设置最小值和最大值Spin
  • 从列表更新选项菜单

    我的 GUI 中有一个 OptionMenu 它由一个列表填充 每次用户运行某个进程时 列表都会更新以反映这一点 有没有办法根据列表更新选项菜单 我试过了self plotWindow update as per 这个问题 https st
  • 如何将现有数据保留在 couchbase 中并且仅更新新数据而不覆盖

    因此 假设我在存储桶下创建了一些记录 文档 并且用户仅更新 RDBMS 中 10 列中的一列 因此我尝试仅发送该一列数据并在 couchbase 中更新它 但问题是 couchbase 会覆盖整个记录并为其余列设置 NULL 一种方法是从
  • 单击 JfreeChart 折线图按钮上的放大和缩小功能?

    基本上我希望线图被放大和缩小 总共4个按钮 2个用于X轴 放大和缩小 另外两个用于Y轴 沿着任何轴单击按钮 就像绘制图形一样在负 x 轴和负 Y 轴区域 根据数据点 然后单击按钮 图形应根据按钮单击沿负 x 轴或负 Y 轴放大和缩小 我怎样
  • 强制应用程序在特定的 .NET 运行时版本下运行?

    我安装了 NET 2 0 运行时 然后安装了 NET 4 0 运行时 所以我两者都有 当我运行 NET 应用程序时 有没有办法强制使用哪个运行时 编辑 澄清 我的意思是不考虑应用程序的构建方式 我假设 NET 4 0 运行时可以运行 5 年
  • OpenSSL::SSL::SSLError: SSL_connect SYSCALL 返回=5 errno=0 状态=SSLv3 读取服务器问候 A

    下面的代码产生以下错误 OpenSSL SSL SSLError SSL connect SYSCALL returned 5 errno 0 state SSLv3 read server hello A require net http
  • 获取 Bash 数组中值的索引

    我有东西在bash like myArray red orange green 我想做一些类似的事情 echo myArray green 在这种情况下会输出2 这是可以实现的吗 这将做到这一点 bin bash my array red
  • C# 7 本地函数:是否允许属性/方面?

    C 7 引入了本地函数 这太棒了 假设我有以下代码 using System using PostSharp Aspects namespace AspectCS7 class Program private static void Mai
  • 对数组中存储的数据进行搜索(运算符不存在:整数[] = 整数)

    我有一个名为 InfoData 的 Rails 模型 它有一个名为 error codes 的属性 代码存储在数组中 如 9 7 10 21 integer 回顾一下 InfoData first error codes gt 9 7 5
  • 有时 F# 不会内联函数,即使它被标记为“内联”?

    let inline funA x printf A x gt 3 let inline funB myFun x printf B myFun x let foo funB funA 7 IL for foo method public
  • 使用 istio 公开公开 grafana

    我们正在使用 Prometheus 运算符 我们需要使用 istio 公开 外部 公开 Grafana https github com helm charts tree master stable prometheus operator
  • Angular Material md-select 以异步方式加载选项

    我需要异步加载选择的选项 通过服务 使用 Angular Materialmd select成分 事实上 我用的是click加载数据的事件 它有效 但我需要单击选择两次才能显示选项 这是一个问题 预期的行为如下所示link https co