Начните с создания BehaviorSubject
в вашем сервисе:
contacts$ = new BehaviorSubject([]);
Это создаст прокси (Observable + Observer), на который вы сможете подписаться и прослушать.
Теперь, когда у нас это есть, давайте заполним его:
getContacts() {
this.http.get(url).subscribe(contacts => this.contacts$.next(contacts));
}
С помощью этого кода вы получите список контактов и поместите его в прокси-сервер.
addContact(newContact: Contact){
this.contacts$.pipe(
take(1),
switchMap(contacts => this.http.post(url, newContact).pipe(
map(() => [...contacts, newContact])
)),
).subscribe(contacts => this.contacts$.next(contacts));
}
С помощью этого вы создаете новый контакт и добавляете его в список существующих контактов.
Создавая прокси, вы создаете источник данных, который вы обрабатываете с помощью HTTPзвонки.
Например, в первом методе я выдаю значение, которое является массивом контактов.Каждый слушатель (то есть везде, где вы написали this.myService.contacts$.subscribe
) получит это значение.
Во втором я начинаю получать список контактов и слушаю одно событие (то есть будущие звонки на contacts$.next
ничего не сделают с этой подпиской).Затем я запрашиваю создание контакта, и после этого я создаю новый источник данных, содержащий предыдущие контакты плюс новый контакт, и затем генерирую событие.
Это не очень понятно и может показаться утомительнымучиться, но как только вы можете использовать его, он становится очень мощным.
Теперь, когда у вас есть основы, я позволю вам обработать обновление и удаление, потому что я здесь не для того, чтобы кодировать для вас!
И если у вас есть какие-либо проблемы с этим кодом,затем я предлагаю вам прочитать документацию и сделать несколько руководств по RxJS, потому что на самом деле это очень мощный инструмент, и вы почти всегда используете его с Angular.