Я только что нашел очень простое и наглядное решение.
Мол, я объяснил ранее, я использовал сервис для передачи данных между сетками.
Все, что мне нужно было сделать, чтобы данные сохранялись в обоих компонентах с ошибками:
Сохраняйте значения ячеек с помощью сервисов и обновляйте их в сетках каждый раз, когда они инициализируются.
(Я не знаю, правильный ли это метод или нет, но он прост и работает. Если у вас есть лучшее решение, пожалуйста, дайте мне знать).
Вот служебный файл:
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
@Injectable()
export class DescActCommunicateAct {
private activiteSource = new BehaviorSubject<string[]>([]);
currentActivite = this.activiteSource.asObservable();
private rowSource = new BehaviorSubject<number[]>([]);
currentRowIndex = this.rowSource.asObservable();
constructor() {}
sendActToBia(activiteValue: string[], rowEditedIndex:number[]) {
this.activiteSource.next(activiteValue);
this.rowSource.next(rowEditedIndex)
}
}
Вот код, который вы должны написать ОБА ваших сеток:
import {DescActCommunicateAct} from '../services/descActCommunicateAct.service';
constructor(private data: DescActCommunicateAct
) { }
editedActiviteValues: string[];
editedRowIds: number[];
params: any;
ngOnInit() {
this.data.currentActivite.subscribe(receivedActiviteValue => (this.editedActiviteValues = receivedActiviteValue));
this.data.currentRowIndex.subscribe(receivedRowId => (this.editedRowIds = receivedRowId));
}
onGridReady(params) {
this.gridApi = params.api;
params.api.sizeColumnsToFit();
for(let i = 0;i<this.editedRowIds.length;i++) {
console.log('________________________________________________________________________')
var rowNode = this.gridApi.getRowNode(this.editedRowIds[i]);
rowNode.setDataValue('activite', this.editedActiviteValues[i]);
}}
agInit(params: any): void {
this.params = params;
}
onCellValueChanged(params) {
const colId = params.column.getId();
if (colId === 'activite') {
this.receivedActiviteValues.push(params.data.activite);
this.receivedRowIndexes.push(params.node.id);
this.data.sendActToBia(this.receivedActiviteValues, this.receivedRowIndexes);
}
}
Наконец, в определении сетки в html-файле: убедитесь, что привязан метод "onGridReady":
<ag-grid-angular
style="width: 5000px ; height: 1000px;"
class="ag-theme-balham"
[rowData]="rowData"
[columnDefs]="columnDefs"
pagination
(gridReady)="onGridReady($event)"
[getRowHeight]="getRowHeight"
[animateRows]="true"
>
</ag-grid-angular>
Надеюсь, это кому-нибудь поможет, там