- Взять за основу какой-нибудь публичный API (Youtube, GitHub, VK, Facebook, или любой другой). Для конфигурации понадобится создание приложения и генерация токена. URL для обращения к API и сам токен предоставить через Interceptor
- Создать одну или несколько страниц со списком айтемов в зависимости от выбранного вами API (видео, посты, репозитории и другое). Должна быть навигация через Routing.
- Реализовать поиск по айтемам, используя кастомный Pipe. Также Pipe может вам понадобиться для форматировании дат (встроенный DatePipe)
- Чтобы реализовать задержку между поисками используйте Subject (выбрать наиболее подходящий) и оператор debounceTime для debounce поля ввода. Для более продвинутого решения можно создать для этих целей директиву.
- Создать директиву, которая в зависимости от даты создания айтема будет применять к нему определенные стили, например, для айтемов, которые были созданы 14 дней назад или раньше, сделать обводку синим цветом. помогут такие зависимости, как ElementRef и Renderer2.
- Создать страничку с подробным описанием конкретного айтема. Для этого нужно передать и обработать параметр в виде itemId. Для перезагрузки данных перед открытием странички можно использовать Resolver (https://alligator.io/angular/route-resolvers/).
5 & 6 опциональные пункты для выполнения задания.
Реализация :
- Используется API Youtube
- Получаю 50 первых записей с информацией о клипах (httpClient, service, interceptor)
- При клике на картинке переход к клипу на Youtube ('a href=...')
- Если год заливки клипа старше 2019 изменяются стили элемента (directive )
- При изменении информации в поле ввода идет обращение к API youtube. (service, debounce, interceptor)
- При нажатии на кнопку More... открывается страница с информацией о клипе (service, router)