angular - 如果来自管道过滤器的数据在Angular8中为空,如何显示自定义消息
问题描述
我有一个组件
<div *ngIf="(StatementData$ | async) as stmtData; else stillLoading">
<div *ngFor="let p of plans">
<h3>{{p.planShortName}}</h3>
<div *ngFor="let s of stmtData.documents | PlanCodePipe : p.planCode">
<span *ngIf="!s.isDownloading"><a (click)="fetchDocument(s);" class="click-link">{{s.label}}</a></span>
</div>
</div>
</div>
我有一个管道过滤器 PlanCodePipe
export class PlanCodePipe implements PipeTransform {
transform(items: any[], planCode: string): any {
// console.log("in pipe for", sectionType);
if (!items) return [];
return items.filter(x => x.planCode === planCode);
}
}
就像您在我的组件中看到的那样,有时此过滤器会导致 0 个匹配项。
<div *ngFor="let s of stmtData.documents | PlanCodePipe : p.planCode">
(它根据外部循环中的当前计划代码过滤文档)如何捕捉并放置“无语句”?由于我正在使用管道过滤器,这是一个棘手的部分。
解决方案
我认为您不应该返回过滤后的项目。添加一个引用变量并检查过滤的项目是否有长度。如果它大于 0,则从那里创建一个标志,然后返回过滤的项目,否则可能会引发错误或消息。这是我基于您的代码的示例。
export class PlanCodePipe implements PipeTransform {
transform(items: any[], planCode: string): any {
// console.log("in pipe for", sectionType);
const planCode = items.filter(x => x.planCode === planCode);
const filteredValues = (planCode.length === 0) ? 'No values found' : planCode;
return filteredValues;
}
}
推荐阅读
- python - 对元组列表的重复元素求和
- python - 当要求输入然后将该变量导入另一个文件时,原始文件会运行两次
- html - 如何让我的字体显示在我的网站上?
- java - Java - 逐级遍历嵌套的 JSON
- lua - 显示从表中选择的随机对象
- python-3.x - Python 3.9.1 - VSC 调试:没有名为 schedule.__main__ 的模块;'schedule' 是一个包,不能直接执行
- c - 如何在 macOS 上使用 SDL 基本上在窗口上绘图?
- javascript - 在 java、javascript 和 c# 的循环中使用注释是否存在任何性能问题?
- php - 跨数据库加入 Codeigniter
- php - 动态创建 MySQL 表列