Один из способов добиться этого - иметь в своем NoteServiceServiceProxy
личный BehaviorSubject , который всегда будет содержать последнее значение заметок.
Как: private _notes = new BehaviorSubject<ListResultDtoOfNoteDto>(null)
- и вы публикуете функцию, предназначенную только для потребителей, чтобы подписаться.
- Ваш вызов API обновит тему только с ответом
public getNotes(): Observable<ListResultDtoOfNoteDto> {
return this._notes.asObservable();
}
public getNotesFromApi(args): {
// Api request
this.httpClient.get().pipe(tap(result) => this._notes.next(result))
// etc...
}
Тогда все, что вам нужно сделать в вашем компоненте, это объявить наблюдаемое что-то вроде
notesData = this. _noteService.getNotes();
внутри init
просто сделайте запрос к API, чтобы получить заметки, и он автоматически обновит вашnotesData
, который должен быть подписан на ваш шаблон через async
трубу вывода.
Когда вы сохраняете все, что вам нужно сделать, это просто добавить concatMap
в конце, чтобы сначала сохранить, а затем запроситьобновление от вашего API.
Так что-то вроде
this._noteService.addNote(note).pipe(
concatMap(() => this._noteService.getNotesFromApi()))
.subscribe();
Это снова обновит вашу переменную notesData, которая есть в шаблоне.
Я надеюсь, вы понимаете, как работает этот поток, и если нет, то не стесняйтесьспросить.
Надеюсь, это поможет!