У компонента есть гвард, реализующий 'CanDeactivate', который производит вызов метода 'validate' компонента и на выходе ожидает 'true' или 'false'.
Сам метод 'validate' компонента выполняет обращение к сервису для проверки введённых пользователем данных.
validate(): boolean {
httpClient.post("api/someservice/validate", userData)
}
Подскажите, как правильно забрать результат выполнения, чтобы получилась следующая логика:
1. Если метод post вернул 200(OK) без тела, то метод возвращает 'true' и гвард разрешает запрошенную навигацию.
2. Если метод post завершился с ошибкой, то получить тело ответа, проанализировать его и, в зависимости от некоторой логики, вернуть либо 'true', либо 'false'.
Через простой 'subscribe', разумеется, не получается, т.к. его выполнения продолжается после того, как validate возвращает управление..
Через '.pipe(map(response =>' удаётся синхронно обработать 200ОК и вернуть true, но тем же способом не получается забрать тело из ошибки 500 из блока catch.