Я пытаюсь сделать http-запрос только , когда моя форма грязная. Я пробовал использовать zip, но он все равно будет выполнять HTTP-запрос, несмотря на то, что результаты канала будут применяться только к блоку подписки. Есть ли у меня способ NOT вложить наблюдаемые объекты, так как я должен подписаться на другой наблюдаемый объект после http-вызова, который приведет к 3 вложенным слоям наблюдаемого.
@ViewChild('form')
form: NgForm;
// only take events when form is dirty
const formValueChanges$ = this.form.valueChanges
.pipe(
debounceTime(500),
filter(() => this.form.dirty),
takeUntil(this._destroy$),
distinctUntilChanged(),
tap(result => {
console.log(result);
})
);
// http request returning an observable
const updateForm$ = this.tempService.update();
zip(formValueChanges$, updateForm$)
.subscribe((response) => {
console.log(response);
}
);
Предполагаемое поведение
this.form.valueChanges
.pipe(
debounceTime(500),
filter(() => this.form.dirty),
takeUntil(this._destroy$),
distinctUntilChanged(),
).subscribe(() => {
console.log("SAVED");
this.tempService.update().subscribe();
});