#angular #typescript #ionic-framework #httpclient
#angular #typescript #ионный фреймворк #httpclient
Вопрос:
Это мой текущий код,
service.ts
export class ApiServiceFunction {
constructor(
private http: HttpClient
) { }
// in app.ts for test connection
testConnection() {
return this.http.get(`${environment.apiUrl}/connection`)
.pipe(
catchError(err => {
console.log('Handling error locally and rethrowing it...', err);
return throwError(err);
})
);
}
}
component.ts
private testConnection() {
this.ApiServiceFunction.testConnection()
.subscribe(
data => {
console.log('data ', data)
},
error => {
console.log('error ',error)
},
);
}
В консоли отображается ошибка
Локальная обработка ошибки и ее повторное удаление… Неизвестная ошибка
app.component.ts: 190 ошибка Неизвестная ошибка
zone-evergreen.js:2845 ПОЛУЧИТЬ http://172.16.0.115:8080/connection net::ОШИБКА_INTERNET_DISCONNECTED
Я хочу получить тест на ошибку «ERR_INTERNET_DISCONNECTED»
Комментарии:
1. Проверьте это руководство: joshmorony.com /…
2. @NajamUsSaqib спасибо, что поделились. Я взглянул на пример, но он не решает мою проблему. Проблема в том, что я не могу получить точную ошибку при возникновении ошибки.
Ответ №1:
мы можем справиться с этим вручную.
Вы должны добавить метод, который дает нам статус пользователя
затем в catchError
поведении дескриптора блока
get isOnline() {
return navigator.onLine;
}
testConnection() {
return this.http.get(`${environment.apiUrl}/connection`)
.pipe(catchError(e => {
if (!this.isOnline) {
return throwError('ERR_INTERNET_DISCONNECTED')
}
return throwError(e)
})
}
Комментарии:
1. Это были хорошие советы по использованию navigator.online. Но, как проверить, — net::ERR_NETWORK_CHANGED — net::ERR_CONNECTION_TIMED_OUT
2. это другой вопрос
3. @saifuladham в вашем случае мы можем реализовать OfflineInterceptor, который будет отслеживать изменения. Смотрите ссылку netbasal.com /…
Ответ №2:
Я полагаю, что вы можете просто извлечь ошибку из строки ошибки, пример того, как это можно сделать с помощью регулярного выражения, приведен ниже
const err = "zone-evergreen.js:2845 GET http://172.16.0.115:8080/connection net::ERR_INTERNET_DISCONNECTED unknown err";
const extractErr = err.match(/net::([A-Z|_] )/gm)[0].split('::')[1]
console.log(extractErr)