AG-GRID - Невозможно получить данные из REST
Я потянул за волосы то, что считал простым кодексом. Я признаю, что я довольно плохо знаком с машинописью и обучением, но больше знаком с javascript.
Я в основном создаю SPA (одностраничное приложение), используя AG-GRID в качестве основного компонента. У меня есть служба, которая извлекает данные из соединения REST (в настоящее время использует сервер JSON для имитации этого) и будет делиться этими данными между несколькими компонентами. AG-GRID, похоже, является единственным компонентом, который в настоящий момент отказывается работать корректно. Я получаю ошибку ниже.
Я искал в интернете решения уже несколько недель, но не могу найти пример, соответствующий моей ситуации. Кто-нибудь здесь знает, что делать с ошибкой ниже?
Ошибка консоли:
error TS2345: Argument of type '(data: Incident_Model) => Incident_Model' is not assignable to parameter of type '(value: Incident_Model[]) => void'.
Types of parameters 'data' and 'value' are incompatible.
Type 'Incident_Model[]' is not assignable to type 'Incident_Model'.
Property 'id' is missing in type 'Incident_Model[]'.
Угловой интерфейс:
export class Incident_Model {
id: number;
Incident: string;
status: string;
}
Угловой сервис:
import { Injectable } from '@angular/core';
import { environment } from '../../environments/environment';
import { HttpClient } from "@angular/common/http";
import { Observable } from 'rxjs/Observable';
import { Incident_Model } from './incident_model';
const BackEnd_URL = environment.BackEnd_URL;
@Injectable()
export class BackEndService {
constructor(private http: HttpClient ) { }
getAllIncidents(): Observable<Incident_Model[]> {
return this.http.get<Incident_Model[]>(BackEnd_URL + '/Incidents');
}
}
Угловой компонент:
ngOnInit() {this.backendservice.getAllIncidents().subscribe( data => this.gridOptions.api.setRowData = data )}
Обновлено с кодом в комментариях ниже - 11h37 - 2018-02-07: Вот полный код компонента на тот случай, если кто-то может обнаружить что-то, что мне не хватает:
import { Component, OnInit } from '@angular/core';
import { GridOptions } from "ag-grid";
import { BackEndService } from '../../Shared/back-end.service';
import { Incident_Model } from '../../Shared/incident_model';
@Component({
selector: 'app-archive',
templateUrl: './archive.component.html',
styleUrls: ['./archive.component.css']
})
export class ArchiveComponent implements OnInit {
private gridOptions: GridOptions;
constructor(private backendservice: BackEndService) {
var gridSize = 8;
var rowHeight = gridSize * 6;
var headerHeight = gridSize * 7;
this.gridOptions = <GridOptions>{
enableFilter: true,
enableColResize: true,
enableSorting: true,
pagination: true,
paginationPageSize:25,
animateRows: true,
headerHeight: headerHeight,
rowHeight:rowHeight
};
this.gridOptions.columnDefs = [
{
headerName: "Headname here",
children:[
{
headerName: "id",
field: "id",
width: 165,
filterParams: { applyButton: true, clearButton:true }
},
{
headerName: "Incident",
field: "Incident",
width: 450,
filterParams: { applyButton: true, clearButton:true }
},
{
headerName: "status",
field: "status",
width: 110,
filterParams: { applyButton: true, clearButton:true }
}
];
}
ngOnInit() {this.backendservice.getAllIncidents().subscribe(data => this.gridOptions.api.setRowData(data)) }
}
1 ответ
Во-первых, данные для должны быть переданы в качестве параметра вместо присваивания:
this.backendservice.getAllIncidents().subscribe(data => this.gridOptions.api.setRowData(data));