Тип "Наблюдаемый <any> 'не присваивается типу' StoresSummaryResults '. Свойство "Данные" отсутствует в типе "Наблюдаемый <any> '

81
9

Я новичок в использовании Observable с Angular 2, и моя структура не получит результатов, хотя я могу проверить ответ от моего REST API.

У меня есть следующий класс данных в TypScript.

import { RESTResult } from '../common/RESTResult';        // Common Response Structure
import { StoresSummaryData } from './StoresSummaryData'; // Structure of records being returned as an array

export class StoresSummaryResults extends RESTResult {
Data: Array<StoresSummaryData>; // Data[] is array ofStoresSummaryData structure ({ field1, field2 ...)

constructor() {
super();
this.Data = new Array<StoresSummaryData>(); // Ensure 1 records exists for testing
this.Data.push(new StoresSummaryData(0, 0));
}
}

Результаты извлекаются из API REST

getResults(): Observable<StoresSummaryResults> {    // Structure 
return this.http.get(this.RequestHttpPath)
.map(this.extractData)
.catch(this.handleError);
};

private extractData(res: Response) {
let body = res.json();
return body.data || {};
}

StoreInfo: StoresSummaryResults;
public constructor(private storesService: StoresService) { }
showResults(): void {
this.StoreInfo = this.storesService.getResults();
}

Я получаю сообщение об ошибке:

Typescript Error
Type 'Observable<StoresSummaryResults>' is not assignable to type 'StoresSummaryResults'. Property 'Data' is missing in type 'Observable<StoresSummaryResults>'.

У меня есть структура данных, хотя она определена, поэтому я не уверен, что исправить.

спросил(а) 2017-02-10T07:13:00+03:00 3 года, 8 месяцев назад
1
Решение
99

Свойство StoreInfo вводится как StoresSummaryResults, но вы пытаетесь присвоить ему возвращаемое значение storesService.getResults() которое является Observable<StoresSummaryResults>.

Таким образом, либо измените значение StoreInfo на " Observable<StoresSummaryResults>, либо назначьте его в подписке:

this.storeSevice.getResults()
.subscribe(results => this.StoreInfo = results);

ответил(а) 2017-02-10T07:22:00+03:00 3 года, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема