将过滤器应用于 *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
我在我的应用程序中使用 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