Итак, метод methodFromParent(rowIndex)
- имеет rowIndex
свойство ввода, но оно не принадлежит index
, вы используете e.target.id
в этом методе .methodFromParent(+e.target.id)
- как index
- поэтому вы столкнулись с проблемой.
на RowNode
интерфейсе, вы можете получить доступ к rowIndex
/** The index of this node in the grid, only valid if node is displayed in the grid, otherwise it should be ignored as old index may be present */
rowIndex: number;
На пользовательском рендерере вы можете получить доступ к полным данным node
(RowNode
интерфейс) , так что просто передайте node.rowIndex
в invokeParentMethod
функцию.
Это может сработать в первый раз, потому что id
может быть таким же, как index
, но в любом случае для получения более подробной информации мне нужно получить ваш реальный код, поэтому, если вы можете, предоставьте plinkr или stackblitz.
Update
Итак, я углубился в ваш пример и вот что я нашел:
Во-первых, this.createNewRowData.bind(this)
- это привязка ссылки, которую необходимо использовать неявно , но здесь это не требуется, и вам нужно выполнить его напрямую ( явно ), попробуйте console.log(newItem)
для ясности , вы получите ссылку function
.
Во-вторых, createNewRowData
- не ре поверните новый объект, и когда вы исправите функцию, такую как let newItem = this.createNewRowData();
, это будет undefined
.
В-третьих, если вы планируете использовать empty
объекты в сетке, тогда updateRowData({remove: [rowNode.data]});
не будет работать, и вам нужно использовать другой способ для remove
, например - selection
. ответьте почему
customRenderer
invokeParentMethod(){
this.props.node.setSelected(true);
this.props.context.componentParent.methodFromParent();
}
parent (основной компонент сетки)
methodFromParent(){
let selectedData = this.gridApi.getSelectedRows();
this.gridApi.updateRowData({ remove: selectedData });
};
Демо