首页 > 解决方案 > 如何使用 Angular 管道过滤掉空值?

问题描述

我目前有一个角管,它根据用户的输入过滤结果。我遇到的唯一问题是某些结果没有值,因此,我收到以下错误:

无法读取 null 的属性“toLocaleLowerCase”

我的管道看起来像这样。

transform(value: QueuedTemplateDto[], filterBy: string): QueuedTemplateDto[] {
    filterBy = filterBy ? filterBy.toLocaleLowerCase() : null;
    return filterBy 
        ? value.filter((check: QueuedTemplateDto) => check.user.toLocaleLowerCase().indexOf(filterBy) !== -1) 
        : value;
}

所以我试图添加一个 if 语句,它只允许执行代码是 check.user 用户属性不是 null 但是每次我尝试输入这个时我都会收到一个错误

在这方面,我的 JavaScript 知识是有限的。任何帮助将不胜感激!

标签: javascriptangulartypescript

解决方案


您只需要检查是否定义了用户属性(null),因此check.user !== null在您的过滤器语句之前添加(忽略所有虚假值只需使用check.user)。

transform(value: QueuedTemplateDto[], filterBy: string): QueuedTemplateDto[] {
filterBy = filterBy ? filterBy.toLocaleLowerCase() : null;
return filterBy ? value.filter((check: QueuedTemplateDto) =>
  check.user !== null && check.user.toLocaleLowerCase().indexOf(filterBy) !== -1) : value;}
  //^^^^^^^^^^^^^^^^^^^^^ ----- here

仅供参考:您可以根据您的要求更改条件。


推荐阅读