У меня есть один компонент (модальный бутстрап), где я редактирую некоторую информацию. Тогда я отправляю его с помощью сервиса. Похоже, это
this.service.updateCompanyById(companyInfo, this.company.id, this.logoImage)
.subscribe(
(data) => {
this.bsModalRef.hide();
},
(err) => console.log(err)
);
На моем обслуживании
updateCompanyById(company, companyId, logoImage?: File) {
... some code
return
this.http.post(`${this.domainName}api/companies/update/${companyId}`, formData)
.do(
(data) => {
this.companyUpdated.next()
this.notificationService.notify('Company updated successfully!');
}
);
}
Как видите, я использую Subject, поэтому другой компонент знает, что компания была обновлена.
Этот компонент просто содержит список всех компаний, которые он получает с помощью сервиса.
В этом компоненте у меня есть
// list of companies
this.companiesService.companyUpdated
.subscribe(
() => {
this.getCompaniesFromServer();
}
)
getCompaniesFromServer() {
this.companiesService.getCompaniesInfo()
.pipe(
share()
)
.subscribe(
(data) => {
this.rows = data;
console.log(data);
}
);
}
Проблема в том, что все запросы дублируются.
Например:
Я впервые редактирую пользователя и получаю один ответ со списком всех пользователей в моем списке компаний. Затем после второго редактирования я получаю два ответа и так далее.
Я предполагаю, что проблема с Темой, но я не могу понять, что именно не так.
Пожалуйста, помогите мне, если можете, заранее спасибо
Кто-нибудь может объяснить, почему это происходит и в чем причина такого поведения?
Возможное решение, предложенное @ misha130 - добавить .pipe (first ())
Другое возможное мнение (хотя я не уверен в этом) - добавить .pipe (take (1))