import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core'; import { TargetingSpec } from '../../interfaces/targeting-spec.interface'; import { DetailedTargetingSpec, detailedSpecInitial } from '../../interfaces/targeting-spec-detailed.interface'; import isEqual from 'lodash-es/isEqual'; /** * Proxy component to be downgraded in angular1. */ @Component({ selector: 'app-detailed-targeting-wrapper', template: ``, changeDetection: ChangeDetectionStrategy.OnPush }) export class DetailedTargetingWrapperComponent { @Input() spec: TargetingSpec = {}; @Input() adaccountId; @Output() change: EventEmitter = new EventEmitter(); ngModelChange (detailedSpec: DetailedTargetingSpec) { if (isEqual(this.spec['flexible_spec'], detailedSpec['flexible_spec']) && isEqual(this.spec['exclusions'], detailedSpec['exclusions'])) { return; } /*All old keys of detailedSpecInitial should be cleared, because now they are inside flexible_spec*/ this.change.emit(Object.assign({}, detailedSpecInitial, detailedSpec)); } }