Я новичок в использовании Observable с Angular 2, и моя структура не получит результаты, хотя я могу проверить ответ от моего REST API.Тип 'Observable <any>' не может быть присвоен типу 'StoresSummaryResults'. Свойство 'Данные' отсутствует в типе 'Observable <any>'
У меня есть следующий класс данных в Typcript.
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));
}
}
Результаты извлекаются из REST API
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>'.
У меня есть структура данных, хотя определено, так что я не уверен, что верный.
Спасибо за быстрый ответ. Это исправляет мою ошибку. При тестировании кода раньше я имел определение с Observable, но только что получил ошибку в другой части кода. Я пытался проверить свой код без HTTP-вызова. При попытке просто вернуть 'Result = new Observable ()' Я не могу добавить элементы в структуру StoreInfo. Я не уверен, как легко это проверить, добавив структуру. –
Вы можете это сделать, но вы хотите, чтобы любой класс включал свойство 'StoreInfo' (вы не включали определение) в' subscribe() '. Таким образом, самому классу не нужно ждать результата. Или вы можете проверить это, издеваясь над 'storeService', чтобы вернуть' Observable.return (storeInfoValue) '. –