У меня есть angular компонент с массивом объектов
export class AlertsConfigListComponent implements OnInit, DoCheck {
@Input() config: ProductAlertConfig[];
И использование IterableDiffer для получения изменений этого массива:
constructor(private iterableDiffers: IterableDiffers) {
this.iterableDiffer = iterableDiffers.find([]).create(null);
}
ngDoCheck(): void {
let changes : IterableChanges<ProductAlertConfig> = this.iterableDiffer.diff(this.config);
if (changes) {
this.doSmth();
}
}
Это работает, и я могу получать изменения каждый раз при изменении массива. Итак, теперь мой вопрос. Как проверить в объекте изменений , что размер массива изменился, потому что он запускается также, когда я сортирую этот массив. Для этой цели в объекте IterableChanges нет свойств.
Если бы я мог получить новый размер массива, я бы сделал это:
ngDoCheck(): void {
let changes : IterableChanges<ProductAlertConfig> = this.iterableDiffer.diff(this.config);
if (changes && newSize !== oldSize) {
this.doSmth();
}
}
И это решило бы проблему, но есть ли другие решения?