如何解决类型错误:[某些函数] 不是角度服务中的函数
您好,我在理解这个问题时遇到了麻烦。我想将服务中某些错误的验证拆分到不同的文件中,因此我创建了此文件:
import { HttpErrorResponse } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { throwError } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class RestErrorHandlerService {
constructor() { }
handleCreteAndEditErrors(error: HttpErrorResponse){
let errorMessage = '';
// Validate HTTP ERROR
if (error instanceof HttpErrorResponse){
switch(error.status){
case 500:
errorMessage = 'Internal server error 500.';
break;
case 404:
errorMessage = 'API endpoint not found.';
break;
case 403:
errorMessage = 'Permission denied.';
break;
case 400:
errorMessage = this.getBadRequestErrors(error);
// if(error.error){
// const errors: string[] = [];
// errors.push('Invalid data:');
// const fields = Object.keys(error.error);
// // Loop through all errores returned by backend and print them
// fields.forEach((field: string) => {
// error.error[field].forEach((element: string) => {
// console.log(element);
// // Print each field with the error in caps
// errors.push(field.charat(0).toupperCase() + field.substring(1) + ': ' + element);
// });
// });
// errorMessage = String(errors);
// }
// if (!errorMessage){
// errorMessage = 'There was a problem sending the request. Bad request.';
// }
break;
default:
errorMessage = 'There was a problem trying to send the request.';
break;
}
}
return throwError(errorMessage);
}
getBadRequestErrors(error: HttpErrorResponse): string{
let errorMessage;
if(error.error){
const errors: string[] = [];
errors.push('Invalid data:');
const fields = Object.keys(error.error);
// Loop through all errores returned by backend and print them
fields.forEach((field: string) => {
error.error[field].forEach((element: string) => {
console.log(element);
// Print each field with the error caps
errors.push(field.charat(0).toupperCase() + field.substring(1) + ': ' + element);
});
});
errorMessage = String(errors);
}
if (!errorMessage){
errorMessage = 'There was a problem sending the request. Bad request.';
}
return errorMessage;
}
}
现在我想将错误 400 拆分为一个新函数,因此我从那里注释了代码,并编写了新函数 getBadRequestErrors
。每次我编写这样的代码时,它都会抛出相同的异常。如果我以相同的方法拥有所有内容,则它可以工作:
TypeError: this.getBadRequestErrors is not a function
@Injectable({
providedIn: 'root'
})
...
constructor(
...
private restErrorHandleService: RestErrorHandlerService,) {}
someMethod(object: Object{
const url = this.hostname + '/api/v1/something/';
return this.http.post(url,object).pipe(
catchError(this.restErrorHandleService.handleCreteAndEditErrors),);
}
hello(){
console.log("Hi");
}
并从 handleCreteAndEditErrors
调用它,它也不会被调用。
为什么我无法从该服务创建函数?看起来和其他的完全一样,是使用 cli 创建的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。