Я использую 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 из своего состояния, так как этого требуют другие компоненты. Как правильно писать селектор в этом случае.

0
user3771885 22 Сен 2018 в 17:15

1 ответ

Лучший ответ

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

Что-то вроде withLatestFrom(this.appstore.select(selectItemB)), которое даст вам B.

Взгляните на этот пример, где то же самое выполняется в эффектах: https://gist.github.com/vteivans/da5adf19a94da9e32d27cb8b9d5b8884

(принцип тот же)

2
dee zg 22 Сен 2018 в 14:21