我在页面上有三个表单组的表单
this.form = this.formBuilder.group({
profile: this.formBuilder.group({
name: [''],
description: [''],
}),
members: this.formBuilder.array([
this.formBuilder.group({
name: [''],
experience: [''],
}),
]),
drinks: this.formBuilder.array([
this.formBuilder.group({
name: [''],
description: [''],
}),
]),
});
在我的情况下,我需要在三个不同的端点上发送这三个表单组。
sendForm() {
const team = this.form.controls.profile.value;
const members = this.form.controls.members.value;
const drinks = this.form.controls.drinks.value);
this.teamService.sendTeam(team).subscribe((response) => {
console.log(response);
});
this.teamService.sendMembers(members).subscribe((response) => {
console.log(response);
});
this.teamService.sendDrinks(drinks).subscribe((response) => {
console.log(response);
});
}
此类请求的最佳做法是什么?我知道三个订阅不是最好的方法,但肯定是最简单的方法。感谢您的建议。
import { forkJoin } from 'rxjs';
sendForm() {
const team = this.form.controls.profile.value;
const members = this.form.controls.members.value;
const drinks = this.form.controls.drinks.value);
forkJoin(
this.teamService.sendTeam(team),
this.teamService.sendMembers(members),
this.teamService.sendDrinks(drinks),
).subscribe(([team, members, drinks]) => {
// any function
})
}
const teamObservable$ = this.teamService.sendTeam(team);
const memberObservable$ = this.teamService.sendMembers(members);
const serviceObservable$ = this.teamService.sendDrinks(drinks);
combineLatest(teamObservable$, memberObservable$, serviceObservable$)
.subscribe(([teamResponse, memberResponse, serviceResponse]) => {
})