вам нужно использовать запомненные селекторы (по умолчанию это делает createSelector) и изменить changeDetection
компонента на ChangeDetectionStrategy.OnPush
. В этом случае компонент будет перерисован только тогда, когда указатель был изменен.
Также вместо глубокого клонирования я бы предложил только изменить указатели на измененные данные.
interface State {
ob1: Obj;
ob2: Obj;
}
// ...
const newState = {...state, ob2: newOb2};
, который сохраняет указатель на ob1
, как это было, но встряхивает изменение состояния для ob2
.