网站搜索

javascript - 这无法访问 http 响应对象:属性在类型 Object 上不存在


我有一个响应对象,我刚刚将它分配给“this”对象。

private data: Object = {};

this.http.post('url', { })
    .subscribe(
        res => {
            console.log(res);
            this.data = res;

            if(this.data.datacentersinfo.length) {}

...

如果我访问 datacentersinfo 对象,它会提示属性 datacentersinfo 在类型 Object 上不存在。由于这个错误,我无法生成 dist 文件夹。

答案#1

你有几种解决方案:

1 - 将你的数据类型设置为 any,不要实例化它:

private data: any;

2 - 改变你的状况:

if(this.data && this.data.datacentersinfo && this.data.datacentersinfo.length) {}

这应该可以解决你的问题。

答案#2

我建议你使用强类型对象,并按如下方式操作

import { Injectable } from '@angular/core';
import { Http, Headers, RequestOptions, 
             Response, ResponseContentType } from '@angular/http';

GetAllCriteria(): Observable<Array<ClassName>> {
    let headers = new Headers({
        'Content-Type': 'application/json'
    });
    let options = new RequestOptions({ headers: headers });
    return this._http.get(this.apiUrl + "/GetAllCriteria",
                       options).subscribe(response => response.json());
}