在Angular中,HTTP请求状态未定义通常是由于没有正确地处理错误或者因为跨域问题而导致的。为了解决这个问题,可以使用Angular的HttpInterceptor拦截器进行错误处理,或者配置后端服务器以允许跨域请求。
以下是一个处理HTTP请求状态未定义的示例代码:
@Component({
selector: 'app-http-error-handler',
template: {{ errorMessage }}
,
})
export class HttpErrorHandlerComponent { public errorMessage: string;
constructor(private httpError: HttpErrorResponse) {}
ngOnInit() {
switch (this.httpError.status) {
case 401:
this.errorMessage = 'Unauthorized';
break;
case 404:
this.errorMessage = 'Not found';
break;
default:
this.errorMessage = Error: ${this.httpError.message}
;
break;
}
}
}
@NgModule({ declarations: [ AppComponent, HttpErrorHandlerComponent ], imports: [ BrowserModule, HttpClientModule ], providers: [ { provide: HTTP_INTERCEPTORS, useClass: HttpErrorHandlerComponent, multi: true } ], bootstrap: [AppComponent] })
在后端服务器的响应头中添加以下代码即可允许跨域请求:
res.setHeader('Access-Control-Allow-Origin', '*');
以上是解决Angular中HTTP请求状态未定义问题的方法和示例代码。