Насколько я знаю, HttpInterceptor
не может точно сказать, откуда исходит запрос.
Учитывая, что, если ваш NgxSpinnerService
является синглтоном, вы можете сделать его с состоянием и установить флаг до того, как input
сделает свой HTTP-запрос.Этот флаг сказал бы NgxSpinnerService отображать счетчик по-другому.Вы также захотите снять этот флаг после завершения HTTP-запроса ввода.Вы можете обернуть эту логику в свой собственный HttpClient
-подобный сервис.
Вы также можете установить что-то особенное в запросе (то есть: в заголовке, в строке запроса) и обнаружить это вместо этого.Обратите внимание, что если вы не измените запрос, этот флаг будет отправлен на сервер без причины.
Обратите внимание, что есть что-то, что следует иметь в виду при этом подходе и вашем текущем перехватчике:
ЕслиВы отправляете два HTTP-запроса, они оба установят флаг и вызовут ваш spinner.show
.Затем, когда первый запрос завершится, он сбросит флаг и вызовет spinner.hide
.Это означает, что, хотя второй запрос все еще находится в полете, ваш счетчик пропадет ...
Это можно исправить, если счетчик числа вызовов show()
был вызван.Вы уменьшаете его при вызове hide()
, и если этот счетчик теперь равен 0, только тогда вы фактически скрываете счетчик.Если значение не равно 0, другой запрос поступает в полет, поэтому не прячьте счетчик.
Пример можно посмотреть здесь: https://stackoverflow.com/a/51813213/78804