Vyhledávání na webu

javascript - toto nepřistupuje k objektu http response: vlastnost neexistuje na typu Object


Mám objekt odpovědi, který jsem právě přiřadil k objektu „this“.

private data: Object = {};

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

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

...

Pokud přistoupím k objektu datacentersinfo, hlásí to, že vlastnost datacentersinfo neexistuje na typu Object. Kvůli této chybě nemohu vygenerovat složku dist.

Odpověď č. 1

Máte několik řešení:

1 - napište svá data do libovolného typu a nevytvářejte jeho instanci :

private data: any;

2 - změňte svůj stav :

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

To by mělo vyřešit váš problém.

Odpověď č. 2

navrhuji, abyste využili silně typizovaný objekt a postupovali níže

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());
}