Krok 1:
Przede wszystkim trzeba dodać zależności do projektu. W swojej package.json dodaj następujący kod:
"dependencies": {
...
"ag-grid": "6.1.0",
"ag-grid-ng2": "6.1.0"
}
upewnij się, że masz najnowszą wersję ag-Grid.
Krok 2:
Aktualizacja System.config.js używać AG-grid w projekcie.
System.config({
packages: {
...
'ag-grid-ng2': {
defaultExtension: "js"
},
'ag-grid': {
defaultExtension: "js"
}
},
map: {
...
'ag-grid-ng2': 'node_modules/ag-grid-ng2',
'ag-grid': 'node_modules/ag-grid'
}
});
Krok 3:
importu AgGridModule w module, w którym chcesz go używać.
Częścią ForRoot jest zapewnienie, że dostawcy AgGrid są wstrzykiwani na poziomie root.
Krok 4:
I ostatnią rzeczą jest to CSS dla ag-Grid. Możesz to zrobić bezpośrednio w swoim pliku index.html
<link href="node_modules/ag-grid/dist/styles/ag-grid.css" rel="stylesheet" />
<link href="node_modules/ag-grid/dist/styles/theme-material.css" rel="stylesheet" />
To wszystko. Konfiguracja została zakończona. ruch
Przejdźmy do wykonania
Utwórz komponent, w którym chcesz korzystać z sieci.
@Component({
selector: 'ag-grid',
template: `
<ag-grid-ng2 style="width: 80%; margin-left: 10%" #agGrid class="ag-material"
[gridOptions]="myGridOptions">
</ag-grid-ng2>`
})
**export class MyGridComponent{ }**
W szablonie mamy tag. Jest to dostarczane przez moduł AgGridModule, który wcześniej importowaliśmy. Należy zwrócić uwagę na właściwość "gridOptions", przypisaliśmy ją do zmiennej o nazwie "myGridOptions" i dlatego musimy zainicjować tę zmienną w komponencie. Dodaj następujący kod w składniku:
private myGridOptions: GridOptions = {};
Powoduje zainicjowanie pustej siatki. Teraz oczywiście potrzebujemy danych w naszej sieci.
Aby dodać datę do ag-Grid, mamy dwie właściwości GridOptions:
rowData
columnDefs
możemy zainicjować oboje na ngOninit. Import OnInit i wdrożenia go do komponentu, a następnie dodaj następujący kod:
import { OnInit } from '@angular/core';
export class MyGridComponent implements OnInit{
ngOnInit() {
this.myGridOptions.rowData = this.createRowData();
this.myGridOptions.columnDefs = this.createColumnDefs();
}
private createColumnDefs() {
return [
{headerName: "NAME", field: "name", width: 100},
{headerName: "AGE", field: "age", width: 100},
{headerName: "GENDER", field: "gender", width: 100}
]
}
// dane zostanie odwzorowany z odpowiednią „pola” klucz z nagłówkami
private createRowData() {
return [
{name: "Geller", age: 30, gender: "Male"},
{name: "Geller", age: 28, gender: "Female"},
{name: "Tribbiani", age: 29, gender: "Male"},
{name: "Bing", age: 30, gender: "Male"},
{name: "Green", age: 28, gender: "Female"},
{name: "Buffay", age: 29, gender: "Female"}
];
}
}
Tutaj mamy dwie metody, które dodaj nagłówki i dane wiersza do siatki.
ten sposób swoją sieć powinna wyglądać następująco:
blog1_1
Używamy motyw materialny, ale można wybrać dowolny jeden chcesz stąd.
Teraz, w ogólnym scenariuszu, otrzymasz te dane z usługi. Stwórzmy dla tego fałszywą usługę. Ale zanim to zrobimy, powinniśmy stworzyć typ dla naszych danych.
Utwórz plik "przyjaciele.ts”i utworzyć klasę Znajomi następująco:
export class Friends{
name: string;
age: number;
gender: string;
}
Teraz za usługę udawanym utwórz friends.service.ts plików i dodaj następujący kod:
import {Friends} from "./friends";
export class FriendsService{
getDate() {
let friends: Friends[] = [
{name: "Geller", age: 30, gender: "Male"},
{name: "Geller", age: 28, gender: "Female"},
{name: "Tribbiani", age: 29, gender: "Male"},
{name: "Bing", age: 30, gender: "Male"},
{name: "Green", age: 28, gender: "Female"},
{name: "Buffay", age: 29, gender: "Female"},
];
return friends
}
}
Aby korzystać usługę, dodaj ją do sekcji dostawców twojego modułu.
Teraz musimy zaktualizować nasze metody w komponencie. Wiersze będą bezpośrednio mapowane, ponieważ właściwość rowData wymaga tablicy dowolnego typu, więc wszystko, co musimy zrobić, to zaktualizować metodę createColumnDefs.
constructor(private friendsService: FriendsService){}
ngOnInit() {
let data: Friends[] = this.friendsService.getDate();
this.myGridOptions.rowData = data;
this.myGridOptions.columnDefs = this.createColumnDefs(data[0]);
}
private createColumnDefs(friends: Friends) {
let keyNames = Object.keys(friends);
let headers = [];
keyNames.map(key => {
headers.push({
headerName: key.toUpperCase(),
field: key,
width: 100
})
});
return headers;
}
Po prostu wyodrębnić klucze z danymi, jak dodać właściwości szerokości i pola, i wsuń go do tablicy.
Nie jestem pewien, czy rozumiem przepływ twojej aplikacji, myślę, że będziemy jej potrzebować, aby odpowiedzieć, gdzie powinieneś "przywrócić stan". Co się dzieje między ratowaniem państwa a przywracaniem państwa? –
@Pablo czy masz przykładowy kod? –