С моей точки зрения, этот код действительно плох и полон риска, когда вы делаете такой код.
Во-первых, вы подписываетесь два раза, и это нехорошо, поскольку вы должны отменить подписку позже.
Во-вторых, 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;
}
}