Объяснение: Метод дочернего компонента был вызван из родительского компонента с array of objects
в качестве параметра.В дочернем компоненте присваивание этой переменной array
.
Родительский компонент:
let obj = [{
'prop1': 'value1',
'prop2': 'value2'
},{
'prop1': 'value1',
'prop2': 'value2'
}];
this.child.sendObject(obj);
Дочерний компонент:
public sendObject(obj) : void {
this.updatedObj = obj;
}
Постановка задачи:
Свойства объектов, переданных из родительского компонента, могут быть обновлены и отправлены дочернему компоненту.
Родительский компонент:
let obj = [{
'prop1': 'value4',
'prop2': 'value2'
},{
'prop1': 'value1',
'prop2': 'value7'
}];
this.child.sendObject(obj);
Новые объекты могут быть добавлены в самом дочернем компоненте в массиве obj
.
Дочерний компонент:
public sendObject(obj) : void {
this.updatedObj = obj;
}
public addNewObj() {
this.updatedObj.push({
'prop3': 'value3',
'prop4': 'value4
})
}
Я хочу проверить (проверить равенство) ранее отправленный объект с этим обновленным объектом.
Что я пробовал до сих пор?
Дочерний компонент:
public sendObject(obj) : void {
const copy = JSON.parse(JSON.stringify(obj));
this.updatedObj = obj;
if (JSON.stringify(this.updatedObj) === JSON.stringify(copy)) {
console.log("Not changed");
} else {
console.log("Changed");
}
}
Выше логика работает нормально, если свойства объектов изменены из родительского, но если я добавил любой новый объектв существующий массив (this.updatedObj
) в дочернем компоненте и переключается обратно с родительского на дочерний.Он разбивает и показывает только объекты, переданные от родителя.