Я не могу использовать свойство массива, полученное из файла JSON через службу http get.Цель состоит в том, чтобы распечатать массив виджетов в Интернете
service.ts:
import { Http, Response, Headers } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import "rxjs/Rx";
import {Interface} from './interface'
@Injectable()
export class Service {
private url = " ";
loadDashboard(): Observable<Interface[]>{
return this.http.get(this.url)
.map((response: Response) => {
return <Interface>response.json();
})
.catch(this.handleError);
}
private handleError(error: Response){
return Observable.throw(error.statusText);
}
}
interface.ts:
export interface Interface {
layout: number;
id: number;
column: number;
row: number;
}
Когда я устанавливаю _array: Interface [], он возвращает неопределенное значение, и код вызывает ошибку при нажатии функции: [ts] Свойство layout не существует в типе Interface [].Когда я установил просто _array;код скомпилирован, но ничего не происходит
typescript.ts:
export class Component implements OnInit {
_array: Interface[];
Widget: Array<{id: number, col: number, row: number}> = [];
constructor (private service: Service) { }
getDashboard(){
this.service.loadDashboard()
.subscribe(
loadArray => {this._array = loadArray}
console.log(this._array); //this line return the data in the JSON file
)
console.log(this._array); //this line return undefined
this.Widget.push({id: this._array.id, layout: this._array.layout, column: this._array.col, row: this._array.row})
}
ngOnInit(){
getDashboard()
}
}
JSON.json:
{
{
"id": 1,
"layout": 1,
"col": 1,
"row": 1
},
{
"id": 2,
"layout": 1,
"col": 1,
"row": 2
}
}