我在书籍和类别之间有很多关系,我想按类别过滤书籍。我在这里缺少什么?因为它会返回未经过滤的书籍。
ngOnInit(): void {
this.bookService.getBooks()
.subscribe(
books => {
this.filteredBooks = books.filter(
book => book.categories.filter(cat => cat.categoryId === this.route.snapshot.params['categoryId']));
this.route.params.subscribe(params => {
this.categoryId = params['categoryId'];
this.updateList();
});
});
}
updateList() {
if (this.categoryId > 0) {
this.books = this.filteredBooks;
}
}
非常感谢!
答案 0 :(得分:0)
在我看来,当你的代码那样时,这段代码非常糟糕且充满风险。
首先,您订阅了两次,但由于您以后必须取消订阅,因此不太好。
其次,this.route.snapshot.params['categoryId']
很难控制输出。
第三,理解this.categoryId = params['categoryId'];
和this.route.snapshot.params['categoryId']
太难了。它就像重复的代码,不是吗?
所以我的建议是,您可以尝试使用可预测状态容器,例如Redux,以便更好地实施程序。
回到你的问题我猜这个方法的根本原因。你检查过了吗?
updateList() {
if (this.categoryId > 0) { // maybe this is false ???
this.books = this.filteredBooks;
}
}