Организуйте поток поиска со switchMap, обработайте загрузку и ошибки, завершайте подписки при уничтожении и используйте стабильный id репозитория в tracking списка.
Как подготовить Angular-список репозиториев к merge?
Организуйте поток поиска со switchMap, обработайте загрузку и ошибки, завершайте подписки при уничтожении и используйте стабильный id репозитория в tracking списка.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Компонент Angular вручную подписывается на HTTP-загрузку по изменению поисковой строки, не отменяет прошлые запросы и не завершает подписку. В шаблоне нет loading/error, строки определяются по индексу. Какие изменения нужны?
Ответ
Организуйте поток поиска со switchMap, обработайте загрузку и ошибки, завершайте подписки при уничтожении и используйте стабильный id репозитория в tracking списка.
AsyncPipe в шаблоне управляет подпиской на observable; для ручной подписки можно использовать takeUntilDestroyed в корректном injection context или с DestroyRef. SwitchMap отсоединяет прошлый inner-поток при новом поиске. CatchError лучше расположить так, чтобы ошибка одного запроса не прекращала весь поток ввода. Перед merge проверяют пустой результат, быстрый ввод, ошибку сети и уход со страницы, не вызывая реальные внешние сервисы в автоматических проверках.
Источник: angular.dev, angular.dev.