для получения дополнительной информации.

ли способ передать параметры в функции выбора ngrx?

Ниже приведен мой случай использования:

Я веду список комментариев в магазине.

Я написал один компонент для представления одного комментария. Итак, один CommentComponent знает идентификатор объекта компонента

Каждый комментарий будет иметь такие свойства, как понравившийся, сообщенный, и т. Д. В пользовательском интерфейсе я показываю все компоненты, использующие * ngFor

Теперь я хочу, чтобы мой CommentComponent подписывался только на один объект комментария, используя идентификатор компонента.

Прямо сейчас я подписываюсь на все комментарии в компоненте верхнего уровня и передаю каждый комментарий в CommentCompoent в качестве входных данных.

Текущий подход не является чистым, потому что стратегия обнаружения угловых изменений (даже если я использую onPush) должна отображать DOM для всех комментариев, даже если изменяется только один комментарий.

Примите во внимание любые предложения, по которым я могу передать идентификатор комментария в функцию выбора, чтобы каждый CommentComponent мог подписаться только на один комментарий.

Заранее спасибо, Судхакар

 maxime199208 сент. 2017 г., 15:08
Это странно Репо с открытым исходным кодом? Можете ли вы воспроизвести на Plunkr или Stackblitz?
 user296099311 апр. 2018 г., 07:21
Что такое трек?
 user296099308 сент. 2017 г., 15:04
@Maxime В настоящее время я делаю то же, что вы упомянули, но Angular требует слишком много времени для рендеринга при изменении одного комментария.
 jgerstle09 апр. 2018 г., 15:33
Я знаю, что это старый, но вы используете трек? Это должно предотвратить экран от повторного рендеринга компонентов комментариев. Также вы нашли ответ на этот вопрос? У меня есть другой вариант использования, для которого я хочу.
 maxime199208 сент. 2017 г., 10:13
Вы подписываетесь на свой комментарий внутри компонента комментариев? Если да, лучше подписаться на массив в родительском компоненте и передать каждый из них с помощью @input. Вы должны держать ваш комментарий как можно более тупым;)

Ответы на вопрос(2)

вы можете передать параметры в селектор ngrx, и вы можете сделать это таким образом

со стороны компонентов

this.store.select(getComments(user_id));

со стороны селектора

export const getComments = (user_id) => createSelector(
  getData,
  (store) => store.comments 
);
 timdeschryver06 янв. 2019 г., 13:32
@Marcus, каждый раз, когда вы используетеgetComments это создаст новый экземпляр селектора. Таким образом, памятка все еще будет применяться здесь. Ты можешь читатьNgRx: параметризованные селекторы для получения дополнительной информации.
 Marcus20 июн. 2018 г., 13:41
Предотвращает ли это запоминание (которое я считаю главной целью createSelector), каждый раз возвращая новый селектор? И это рекомендуется в официальной документации?
Решение Вопроса

вы можете использовать селектор с реквизитом.

export const getCount = () =>   
  createSelector(     
    (state, props) => state.counter[props.id],     
    (counter, props) => counter * props.multiply
);

Для получения дополнительной информации и различных способов, проверьте мою статьюNgRx: параметризованные селекторы

Ваш ответ на вопрос