В наши дни для этого доступно немало модулей. Недавно я написал модуль для этого, потому что меня не устраивало множество различных модулей, которые я нашел. Его называют odiff
: https://github.com/Tixit/odiff . Я также перечислил кучу самых популярных модулей и почему они не были приемлемы в readme из odiff
, которые вы могли бы просмотреть, если odiff
не обладает требуемыми свойствами. Вот пример:
var a = [{a:1,b:2,c:3}, {x:1,y: 2, z:3}, {w:9,q:8,r:7}]
var b = [{a:1,b:2,c:3},{t:4,y:5,u:6},{x:1,y:'3',z:3},{t:9,y:9,u:9},{w:9,q:8,r:7}]
var diffs = odiff(a,b)
/* diffs now contains:
[{type: 'add', path:[], index: 2, vals: [{t:9,y:9,u:9}]},
{type: 'set', path:[1,'y'], val: '3'},
{type: 'add', path:[], index: 1, vals: [{t:4,y:5,u:6}]}
]
*/
Таблица PrimeNG обнаруживает изменения на основе ссылки на изменения значений, поэтому решение проблемы может быть решено только созданием нового объекта или созданием глубокой копии
Для создания глубокой копии используйте JSON.parse(JSON.stringify(a))
или используйте cloneDeep от lodash
refreshGrid() {
let temp = [...this.tableItems];
temp = JSON.parse(JSON.stringify(temp));
this.tableItems = temp;
setTimeout(() => {
this.tableItems = [...temp];
}, 0);
}
Обновлен стек-блиц