我有一个服务,它接收 2 个属性 http 和零食,当在函数中调用零食时,这是未定义的,但当在构造函数中打印在控制台上时,它有一个值。
这是我的服务:
import { throwError as observableThrowError, empty as observableEmpty } from 'rxjs';
import { HttpResponseBase } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { AuthHttp } from './auth-http';
import { Snacks } from './snacks/snacks.service';
@Injectable()
export class BaseService {
private _http: AuthHttp;
private _snack: Snacks;
constructor(http: AuthHttp, snack: Snacks) {
this._http = http;
this._snack = snack;
}
...
protected handleError(error: any) {
// In a real world app, you might use a remote logging infrastructure
let errMsg: string;
if (error instanceof Response || error instanceof HttpResponseBase) {
if (error.status === 401 || error.status === 403 || error.status === 503) {
return observableEmpty();
}
if (error.status === 400 || error.status === 404) {
return observableThrowError(error);
}
const body = error || '';
const err = body || JSON.stringify(body);
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
} else {
errMsg = error.message ? error.message : error.toString();
}
if (error.error.message) {
this._snack.error(error.error.message);
}
return observableThrowError(error.error.data);
}
}
有人知道为什么吗?
最佳答案
如何调用handleError
?最有可能的是它的使用方式使 this
指向窗口对象或其他对象。在本例中,将 handleError
更改为箭头函数,因为这会将 this
保留在方法体内。
protected handleError = (error:any) => {
/* unchanged body of method from your question */
}
关于javascript - 服务内的 Null 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59268989/