Как обновить значения 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();
});
  1. Содержит ли результат myQueryList.changes все представления на экране, связанные с запросом ViewChildren, или только новые, которых там не было изначально?
  2. Правильно ли использовать сброс в поместье выше для обновления содержимого myQueryList?

0 ответов

Другие вопросы по тегам