【问题标题】:Apply filters to *ngFor for a nested Object对嵌套对象应用过滤器到 *ngFor
【发布时间】:2018-03-28 14:38:16
【问题描述】:

我在我的应用程序中使用this 管道示例,它适用于简单对象,但不适用于嵌套对象,例如,让我们以链接中的示例为例,将 auther 更改为对象而不是字符串,现在作者将从此转变:

"author": "George R. R. Martin",

对此:

"author": {
     "name": "George R. R. Martin",
     "age": 25
}

我还更改了过滤器值以适应更改:

[(ngModel)]="filter.author.name"

但是在这些更改之后,搜索器不再为作者输入工作。

我错过了什么吗?

【问题讨论】:

    标签: angular nested pipes-filters


    【解决方案1】:

    原因是过滤器被定义为 Book 类的实例:filter: Book = new Book();,这意味着当您尝试执行此操作时,[(ngModel)]="filter.author.name" 会出现错误,因为 Book 类将 author 定义为一个字符串,而不是具有 name 属性的对象。

    一个可能的解决方案是创建一个具有所需属性(即姓名和年龄)的Author 类和Author 类型的对应authorFilter。然后,当过滤器的类型为 Author 时,您可以修改过滤器以查找嵌套属性 age

    Working demo

    【讨论】:

    • 这正是我所做的(在问题中已经提到过),但现在仍在工作。
    • 我的意思与你已经尝试过的有点不同,让我整理一个快速的 stackblitz 示例
    • 会很棒,你能做到吗?
    • 好的,我花了一些时间构建了一个 Plunker,它实现了数字、字符串或对象的过滤。我已经修改了答案以包含链接。显然还有其他方法,可能更优雅或更高效,可以实现相同的目标,但这是其中之一。
    • 抱歉,不知何故 Plunker 没有保存我的更改。我已经重做了 StackBlitz 中的事情,现在链接应该很好了。
    猜你喜欢
    • 2016-03-23
    • 2020-07-28
    • 2020-03-11
    • 2018-02-26
    相关资源
    最近更新 更多