将过滤器应用于 *ngFor 以获得嵌套对象

Apply filters to *ngFor for a nested Object

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

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

为此:

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

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

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

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

我是不是漏掉了什么?

原因是过滤器被定义为 Book class: filter: Book = new Book(); 的一个实例,这意味着当您尝试这样做时 [(ngModel)]="filter.author.name" 您会得到一个错误,因为Book class 将 author 定义为字符串,而不是带有 name 属性 的对象。

一个可能的解决方案是创建一个 Author class 具有所需的属性(即姓名和年龄)和类型 Author 的对应者 authorFilter。然后,当过滤器的类型为 Author.

时,您可以修改过滤器以查找嵌套的 属性 age

Working demo