Как обновить значения QueryList с помощью сброса?
Читая о QueryList, я вижу, что это неизменяемый список, но он содержит наблюдаемые изменения, на которые я могу подписаться и получить доступ к любым изменениям, которые он получает. Он также имеет функцию reset (), которая «обновляет сохраненное значение списка запросов».
В моем случае QueryList является результатом директивы @ViewChildren, которая запрашивает набор представлений на странице. Я предполагаю, как это работает: когда angular рисует все на экране, срабатывает QueryList, и мы получаем список связанных представлений. Если я тогда запустил:
myQueryList.toArray();
Тогда я мог получить доступ к этим представлениям. Но теперь давайте рассмотрим, что на экран добавлено новое представление (назовем его newView). Если я сейчас обращаюсь к queryList, он не должен измениться. Но если я подписываюсь на queryList.changes, я получаю новый список представлений, содержащий все старые представления и newView.
Если я хочу, чтобы myQueryList.toArray() отражал эти изменения, мне пришлось бы сделать что-то вроде:
myQueryList.changes.subscribe((changes) => {
//"changes" should be a list/array of all the old views plus newView
myQueryList.reset(changes)
//The result of this call will contain all of old views, and newView
myQueryList.toArray();
});
- Содержит ли результат myQueryList.changes все представления на экране, связанные с запросом ViewChildren, или только новые, которых там не было изначально?
- Правильно ли использовать сброс в поместье выше для обновления содержимого myQueryList?