如何使用 Angular 2 在下拉列表中仅显示唯一值

2023-11-30

我有一个 JSON 数据,我使用 *ngFor 将“accountNumber”显示到下拉列表中。由于 JSON 数据中有多个条目具有相同的帐号,因此我在下拉列表中多次看到相同的帐号。在此输入图像描述

html:

<div class="btn btn-default dropdown-toggle" type="button" 
  id="dropdownMenu" data-toggle="dropdown" aria-expanded="true">

  <span>Select</span>
  <span class="caret"></span>
  <ul class="select-menu" aria-labelledby="dropdownMenu">
    <li *ngFor="#account of accounts">{{account.accountNumber}}</li>
  </ul>
</div>

json:

`[
{
    "accountNumber": 7890,
    "transactionDate": "4/2/2016",
    "postingDate": "4/3/2016",
    "description": "Pok Pok Thai",
    "category": "Restaurants",
    "amount": 15.00
},
{
    "accountNumber": 7890,
    "transactionDate": "4/3/2016",
    "postingDate": "4/4/2016",
    "description": "Pok Pok Hai",
    "category": "Hotel",
    "amount": 25.00
},

{
    "accountNumber": 8901,
    "transactionDate": "4/6/2016",
    "postingDate": "4/7/2016",
    "description": "Pok Pok Fai",
    "category": "Dairy",
    "amount": 55.00
},
{
    "accountNumber": 8901,
    "transactionDate": "4/7/2016",
    "postingDate": "4/8/2016",
    "description": "Pok Pok Aai",
    "category": "Automotive",
    "amount": 65.00
},

{
    "accountNumber": 4567,
    "transactionDate": "4/9/2016",
    "postingDate": "4/10/2016",
    "description": "Pok Pok Cai",
    "category": "Healthcare",
    "amount": 85.00
},
{
    "accountNumber": 4567,
    "transactionDate": "4/10/2016",
    "postingDate": "4/11/2016",
    "description": "Pok Pok Dai",
    "category": "Healthcare",
    "amount": 95.00
},

{
    "accountNumber": 8901,
    "transactionDate": "4/12/2016",
    "postingDate": "4/13/2016",
    "description": "sit amet",
    "category": "Software",
    "amount": 115.00
}
 ]`

如何避免在下拉列表中显示帐号的重复值?我假设它将需要自定义管道,但不确定如何做到这一点。

我是 Angular 2 的新手,尝试寻找解决方案,但找不到任何适合我需要的东西。


已经有关于管道的基本解释后的示例:如何将过滤器应用于 *ngFor

查看适合您情况的工作插件http://plnkr.co/edit/E7HlWeNJV2N3zwPfI51Q?p=preview.. 我用过lodash图书馆及其uniqBy函数,那么管道就真的那么简单:

declare var _: any; // lodash, not strictly typed

@Pipe({
    name: 'uniqFilter',
    pure: false
})
@Injectable()
    export class UniquePipe implements PipeTransform {
        transform(items: any[], args: any[]): any {

        // lodash uniqBy function
        return _.uniqBy(items, args);
    }
}

..以及您组件中的用法:

<div>
    <ul>
        <li *ngFor="let account of accounts | uniqFilter: 'accountNumber'">{{ account.accountNumber }}</li>
    </ul>
</div>

EDIT:我已将 plunker 更新到最新的 Angular 版本,并向管道添加了过滤参数。

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

如何使用 Angular 2 在下拉列表中仅显示唯一值 的相关文章

随机推荐

  • jQuery 如果 DIV 没有类“x”

    在 jQuery 中 我需要执行一个 if 语句来查看 this 是否不包含类 selected thumbs hover function this stop fadeTo normal 1 0 function this stop fa
  • PCM:无法访问合作伙伴

    按照快速入门指南操作时 合作伙伴连接管理器 PCM 出现问题 采取的步骤 启用智能设备管理API 配置 OAuth 权限屏幕 添加了 智能设备管理 API auth sdm service 的范围 为新的 Web 服务器创建 OAuth 令
  • JavaScript函数将unicode伪字母转换为常规字符?

    我正在尝试编写一个函数 该函数接受包含 unicode 伪字母表中的字符的任何字符串 并返回一个等效字符串 其中这些字符已替换为 ASCII 中的常规字符 const toRegularCharacters s gt toRegularCh
  • 读取内存中的exe文件并执行

    是否可以使用Windows将文件读入内存 将数据保存在字节数组中 从文件系统中删除原始文件并从内存中执行它 EDIT 我的目标是保护我的 java 代码免受逆向工程的影响 我用 C 编写了一个启动器 它获取加密的 jar 文件 解密并启动它
  • Tensorflow:如何编码和读取bmp图像?

    我正在尝试读取 bmp 图像 对这些图像进行一些增强 将它们保存到 tfrecords 文件中 然后打开 tfrecords 文件并使用这些图像进行图像分类 我知道有一个 tf image encode jpeg 和一个 tf image
  • Android 调用“requestWindowFeature( Window.FEATURE_PROGRESS );”时出错在活动中

    我正在尝试在 Android 活动中显示 WebView 的加载进度 当我尝试使用以下命令显示窗口的进度条时 requestWindowFeature Window FEATURE PROGRESS as per http develope
  • 如何为 HTML 页面创建渐变背景

    我正在学习 HTML 为 HTML 页面创建渐变背景的最佳方法是什么 到目前为止 这是我的背景 body style background color Powderblue 我知道这不是渐变 这不能在 html 中完成 但可以在 css 特
  • 发送推送通知 Firebase React-JS

    我正在开发一个使用 Firebase 云消息传递反应的项目 我正在将其发送到我的服务器 但它不起作用 当然我已经尝试过了 但我不知道又出了什么问题 下面是代码 这里它发送一个POST向 Firebase 请求 它应该向用户发送通知 asyn
  • Java:将文件名分为基本名和扩展名

    有没有比类似的方法更好的方法来获取文件基名和扩展名 File f String name f getName int dot name lastIndexOf String base dot 1 name name substring 0
  • 属性 [Bind(Exclude="")] 无法防止过度发布

    防止 MVC 4 过度发布的最佳方法是什么 根据 MS 的消息来源 Bind 属性应该是通过阻止传入的表单值进入数据库来防止过度发布的最简单方法 使用最新版本的 MVC 和 EF 这似乎并没有按预期 宣传的那样工作 除非我错过了一些重要的东
  • 使用 Codeigniter 分页库“显示 X 到 Y 的 Z 结果”?

    我正在使用 Codeigniter 分页库 我想知道如何获取使用分页类显示的第一个和最后一个项目的数量 所以 如果我有 12 个结果 并且 per page 设置为 5 我想要 Page 1 Displaying 1 to 5 of 12
  • 如何将Windows SDK添加到Eclipse C工具中?

    我为 Java 开发人员使用 Eclipse Juno 并且想向其中添加 C C 功能 我下载了 Windows SDK 并尝试创建 Hello World C 项目 但 Eclipse 似乎看不到 Windows SDK 所以我无法编译我
  • 如何渲染重复的 React 元素?

    我已经编写了一些代码来在 ReactJS 中渲染重复元素 但我讨厌它有多难看 render function var titles this props titles map function title return th title t
  • Android Studio 3.0 任务执行失败:无法合并 dex

    android studio 在构建执行时遇到构建错误 如下所示 错误 任务 app transformDexArchiveWithExternalLibsDexMergerForDebug 执行失败 java lang RuntimeEx
  • iphone - 清理 Localized.strings

    我有一个应用程序经历了一次大手术 很多内容都被修改了 该应用程序过去和现在都已本地化为多种语言 我确信 localized strings 文件中的某些字符串不再被使用 其中至少有20 有没有办法检查应用程序仍在使用哪些字符串 以便我可以从
  • 如何将 REST API 限制为用户特定的内容

    我使用 PassportJS 在 MEAN 堆栈上设置了相当简单的 API 我在设置没有安全性 获取一般数据 和用户身份验证 安全信息 的路由时没有任何问题 但是 我似乎找不到授予基于用户的访问权限的最佳实践 例如 api users id
  • 如何防止提供扩展方法的公共类出现在 Intellisense 中?

    有没有办法从 Intellisense 中 隐藏 类的名称 该类的唯一目的是提供扩展方法 我想从 Intellisense 列表中删除类名 但需要该类的扩展方法可以通过 Intellisense 以通常的方式供外部程序集使用 我希望您可以使
  • 模板中的模板:为什么嵌套模板参数列表中的“`>>”应该是“> >””

    我知道当我们在另一个模板中使用模板时 我们应该这样写 vector
  • 使用 CSS 定位某些单词?

    这是一个理论问题 但我想知道这是否可能 所以如果你有一个 div 包含一些内容 例如 div 100 00 BUY div 那么您可以定位 100 00 英镑 而不定位其余部分吗 那么你可以增加 100 00 英镑的字体大小吗 不 如果不将
  • 如何使用 Angular 2 在下拉列表中仅显示唯一值

    我有一个 JSON 数据 我使用 ngFor 将 accountNumber 显示到下拉列表中 由于 JSON 数据中有多个条目具有相同的帐号 因此我在下拉列表中多次看到相同的帐号 在此输入图像描述 html div class btn b