JSON.stringify(input)返回未定义

时间:2019-09-04 07:52:39

标签: angular

我正在编写服务以调用已部署的云功能api。我不确定发生了什么事情,因为我为用户编写的先前服务运行良好,甚至JSON.stringify都将数据完美地更改为json,但现在我已经以与上一个,但是在此服务中json.stringigy无法正常工作,未定义返回。我还在控制台中看到此错误

  

未捕获的TypeError:无法读取未定义的属性'ngOriginalError'

这是我的服务代码

@Injectable()
export class ProductAddonServiceProxy {
    private http: HttpClient;
    private baseUrl: string;
    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;

    constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {
        this.http = http;
        this.baseUrl = baseUrl ? baseUrl : "";
    }

    AddAddonData(input: AddAddonDto | null | undefined): Observable<void> {
        let url_ = this.baseUrl + "https://us-central1-donskybackend.cloudfunctions.net/xxxxxx";
        url_ = url_.replace(/[?&]$/, "");

        const content_ = JSON.stringify(input);
        console.log(JSON.stringify(input));
        let options_: any = {
            body: content_,
            observe: "response",
            responseType: "blob",
            headers: new HttpHeaders({
                "Content-Type": "application/json",
                "Accept": "application/json"
            })
        };

        return this.http.request("post", url_, options_).mergeMap((response_: any) => {
            return this.processAddAddonData(response_);
        }).catch((response_: any) => {
            if(response_ instanceof HttpResponseBase) {
                return this.processAddAddonData(<any>response_);
            }
            // if (response_ instanceof HttpResponseBase) {
            //     try {
            //         return this.processAddProfile(<any>response_);
            //     } catch (e) {
            //         return <Observable<void>><any>Observable.throwError(e);
            //     }
            // } else
            //     return <Observable<void>><any>Observable.throwError(response_);
        });
    }

    protected processAddAddonData(response: HttpResponseBase): Observable<void> {

        const status = response.status;
        const responseBlob =
            response instanceof HttpResponse ? response.body :
                (<any>response).error instanceof Blob ? (<any>response).error : undefined;

        let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); } };
        if (status === 200) {
            return blobToText(responseBlob).mergeMap(_responseText => {
                let result200: any = null;
                let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver);
                return Observable.of(resultData200);
            });
        } else if (status === 401) {
            return blobToText(responseBlob).mergeMap(_responseText => {
                return throwException("A server error occurred.", status, _responseText, _headers);
            });
        } else if (status === 403) {
            return blobToText(responseBlob).mergeMap(_responseText => {
                return throwException("A server error occurred.", status, _responseText, _headers);
            });
        } else if (status !== 200 && status !== 204) {
            return blobToText(responseBlob).mergeMap(_responseText => {
                return throwException("An unexpected server error occurred.", status, _responseText, _headers);
            });
        }
        return Observable.of<void>(<any>null);
    }
}

这就是我在输入中发送的内容

AddAddonDto {options: true, code: "90878", prodname: "Hello Product", price: "400", description: "dfg dgdsfgds ", …}

看看this图片

0 个答案:

没有答案