Я использую Ngrx в своем приложении для хранения состояния. Допустим, в моем магазине есть два предмета: itemA и itemB. Мой компонент X реагирует на изменение в itemA и запускает функцию, которая в дальнейшем выполняет более сложные вычисления, требующие текущего значения itemB.
ComponentX {
pi = 3.15;
date = new Date();
constructor(private appStore: Store<AppState>){}
ngOnInit() {
this.appstore.select(selectItemA).subscribe(
(itemA) => someComplexFunction(itemA)
)
}
someComplexFunction(itemA) {
/* Requires itemB */
}
}
Компонент X, однако, не заботится об изменении itemB, ему требуется только текущее значение itemB при изменении itemA. Я не могу удалить itemB из своего состояния, так как этого требуют другие компоненты. Как правильно писать селектор в этом случае.
1 ответ
Вы можете использовать оператор withLatestFrom
.
Что-то вроде withLatestFrom(this.appstore.select(selectItemB))
, которое даст вам B
.
Взгляните на этот пример, где то же самое выполняется в эффектах: https://gist.github.com/vteivans/da5adf19a94da9e32d27cb8b9d5b8884
(принцип тот же)
Похожие вопросы
Новые вопросы
angular
Вопросы по Angular (не путать с AngularJS), веб-фреймворку от Google. Используйте этот тег для угловых вопросов, которые не относятся к конкретной версии. Для более старой веб-платформы AngularJS (1.x) используйте тег angularjs.