javascript - 服务内的 Null 属性

标签 javascript angular

我有一个服务,它接收 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/

相关文章:

javascript - 单击时更改跨度的颜色

javascript - 删除第一个点和最后一个点之间的线 (line-chart/flot.js)

javascript - 将 CSS 加载到 Webpack 中有什么意义?

javascript - 屏幕阅读器仅读取页面末尾的 Jquery 对话框

javascript - 如何更改 [innerHTML] 的 svg 填充颜色

angular - router.navigate Angular 2 后处理停止传播的错误

angular - 如何清除模板缓存?

javascript - React.useCallback 会内存 curried 函数吗?

angular - typescript http.get 错误 : No overload matches this call

angular - Ngx Bootstrap Dropdown 无法显示 ag 网格中的完整列表