angular - 您如何在对象列表上使用管道、地图、过滤器、材质自动完成?
问题描述
我正在开发一个使用 Angular 和 Material Design 的项目,我想使用自动完成功能让用户按名称属性从对象列表中进行搜索。
我正在阅读一个 JSON 文件并尝试生成一个对象列表,我可以通过它们的 name 属性轻松搜索这些对象。
“champion.json”有一个 data 属性,它是我需要的 JSON 对象列表,“name”、“key”和“pic”是 png 文件的 URL。
我创建了一个服务,它使用 HTTPClient 从静态 API 或我的资产文件夹中获取 JSON 对象。
到目前为止,我已经测试,发现可以通过使用*ngFor直接遍历对象列表来查看列表中的对象,但是我想使用*ngFor来异步显示过滤后的对象列表。但是,每当我切换到“让过滤对象的对象|异步”时,对象列表都不会显示,异步管道不适用于我通过读取 JSON 文件生成的可观察对象列表。
我的理论是,我需要在读取 json 文件之后定义/生成过滤后的对象列表,否则我错误地定义了过滤器函数。
您可以在 stackblitz 上看到代码,但我不熟悉使用它,甚至无法使用它<mat-option *ngFor="let champ of championList" [value]="champ">
显示在我的开发服务器(ng serve)上。我认为材料设计依赖项没有正确安装,但不知道为什么。我在 stackblitz 上的应用
解决方案
我解决了。自动完成功能可能在我应用过滤器时没有看到任何列出的内容,因为它有“startWith('')”,所以在我输入内容之前什么都没有显示。
推荐阅读
- loops - 乘法表项目
- amazon-web-services - AWS Neptune 节点计数超时
- jupyter-notebook - 合并 Jupyter Notebook 降价表中的单元格
- algorithm - 在 BX=0 的情况下最大化 AX 的算法
- android - 尝试在android中捕获签名时获取`this.refs.signatureCanvas.takeSnapshotAsync is not a function`
- elasticsearch - 如何在elasticsearch中以排序方式查找条目数
- docker - 试图覆盖 ENTRYPOINT 的参数
- javascript - 使用 JavaScript 通过 Min.Io 上传的文件已损坏
- javascript - 如何过滤对象数组中的记录
- reactjs - Redux Saga 测试计划 - 为提供的调用存根不同的响应