Подписаться Angular 6
toppings : Array
toppings2 : Array
У меня есть 2 способа подписки:
this.toppings.valueChanges.subscribe(val=> {
console.log(val);
}
this.toppings2.valueChanges.subscribe(val2=> {
console.log(val2);
}
Я хочу использовать val и val2 в одной и той же функции. Как я могу получить val и val2 в одном месте? (или val3= val+val2)
2 ответа
Решение
zip
объединяет две наблюдаемые и ждет, когда они оба испустят. CombineLatest будет делать то же самое, это не имеет значения, что вам нужно,
zip(this.toppings.valueChanges, this.toppings2.valueChanges).subscribe(val => console.log(val[0] + val[1]))
Зерноуборочный комбайн предоставит вам последнюю версию как начинки, так и начинки2.
https://www.learnrxjs.io/operators/combination/combinelatest.html
Мраморная диаграмма: http://rxmarbles.com/
Пример:
import {combineLatest} from 'rxjs';
combineLatest(this.toppings.valueChanges, this.toppings2.valueChanges )
.subscribe( ([topping1val, topping2val]) => {
let topping3 = topping1val + topping2val;
});