Skip to content

Commit da320b5

Browse files
Prevent ItemSearchResult from being recreated at every iteration
1 parent 27a83d6 commit da320b5

3 files changed

Lines changed: 16 additions & 7 deletions

File tree

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<ds-listable-object-component-loader
2-
[object]="transformItemToItemSearchResult(object)"
2+
[object]="itemSearchResult"
33
[viewMode]="viewMode"
44
[linkType]="linkType">
55
</ds-listable-object-component-loader>

src/app/shared/object-list/item-list-element/item-types/item/item-list-element.component.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ describe('ItemListElementComponent', () => {
110110
describe(`when the publication is rendered`, () => {
111111
beforeEach(() => {
112112
comp.object = mockItem;
113+
comp.ngOnChanges();
113114
fixture.detectChanges();
114115
});
115116

src/app/shared/object-list/item-list-element/item-types/item/item-list-element.component.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1-
import { Component } from '@angular/core';
1+
import {
2+
Component,
3+
OnChanges,
4+
} from '@angular/core';
25

36
import { Item } from '../../../../../core/shared/item.model';
47
import { ViewMode } from '../../../../../core/shared/view-mode.model';
8+
import { hasValue } from '../../../../empty.util';
59
import { ItemSearchResult } from '../../../../object-collection/shared/item-search-result.model';
610
import { listableObjectComponent } from '../../../../object-collection/shared/listable-object/listable-object.decorator';
711
import { ListableObjectComponentLoaderComponent } from '../../../../object-collection/shared/listable-object/listable-object-component-loader.component';
@@ -21,12 +25,16 @@ import { AbstractListableElementComponent } from '../../../../object-collection/
2125
/**
2226
* The component for displaying a list element for an item of the type Publication
2327
*/
24-
export class ItemListElementComponent extends AbstractListableElementComponent<Item> {
28+
export class ItemListElementComponent extends AbstractListableElementComponent<Item> implements OnChanges {
2529

26-
transformItemToItemSearchResult(object: Item): ItemSearchResult {
27-
const itemSearchResult = new ItemSearchResult();
28-
itemSearchResult.indexableObject = object;
29-
return itemSearchResult;
30+
itemSearchResult: ItemSearchResult;
31+
32+
ngOnChanges(): void {
33+
if (hasValue(this.object)) {
34+
this.itemSearchResult = Object.assign(new ItemSearchResult(), {
35+
indexableObject: this.object,
36+
});
37+
}
3038
}
3139

3240
}

0 commit comments

Comments
 (0)