diff --git a/lib/content-services/content-metadata/components/content-metadata/content-metadata.component.spec.ts b/lib/content-services/content-metadata/components/content-metadata/content-metadata.component.spec.ts index d7f6ea3014..63d63447fd 100644 --- a/lib/content-services/content-metadata/components/content-metadata/content-metadata.component.spec.ts +++ b/lib/content-services/content-metadata/components/content-metadata/content-metadata.component.spec.ts @@ -237,5 +237,22 @@ describe('ContentMetadataComponent', () => { expect(basicPropertiesComponent.displayEmpty).toBe(false); }); })); + + it('should be performed again if property updating occured, since the originally passed node has changed, so the previously calculated properties', () => { + const property = { key: 'property-key', value: 'original-value' }, + updateService = fixture.debugElement.injector.get(CardViewUpdateService), + nodesApiService = TestBed.get(NodesApiService); + + spyOn(nodesApiService, 'updateNode').and.callFake(() => Observable.of(node)); + spyOn(contentMetadataService, 'getBasicProperties'); + component.ngOnChanges({ node: new SimpleChange(null, node, true) }); + updateService.update(property, 'updated-value'); + + component.ngOnChanges({ expanded: new SimpleChange(false, true, false) }); + component.ngOnChanges({ expanded: new SimpleChange(true, false, false) }); + component.ngOnChanges({ expanded: new SimpleChange(false, true, false) }); + + expect(contentMetadataService.getBasicProperties).toHaveBeenCalledTimes(2); + }); }); }); diff --git a/lib/content-services/content-metadata/components/content-metadata/content-metadata.component.ts b/lib/content-services/content-metadata/components/content-metadata/content-metadata.component.ts index 2ce38327c6..72f6739b3e 100644 --- a/lib/content-services/content-metadata/components/content-metadata/content-metadata.component.ts +++ b/lib/content-services/content-metadata/components/content-metadata/content-metadata.component.ts @@ -47,6 +47,7 @@ export class ContentMetadataComponent implements OnChanges, OnInit { @Input() preset: string; + nodeHasBeenUpdated: boolean = false; basicProperties$: Observable; aspects$: Observable; @@ -59,15 +60,20 @@ export class ContentMetadataComponent implements OnChanges, OnInit { this.cardViewUpdateService.itemUpdated$ .switchMap(this.saveNode.bind(this)) .subscribe( - node => this.node = node, + (node) => { + this.nodeHasBeenUpdated = true; + this.node = node; + }, error => this.logService.error(error) ); } ngOnChanges(changes: SimpleChanges) { const nodeChange: SimpleChange = changes['node']; - if (nodeChange) { - const node = nodeChange.currentValue; + if (nodeChange || this.nodeHasBeenUpdated) { + const node = nodeChange && nodeChange.currentValue || this.node; + this.nodeHasBeenUpdated = false; + this.basicProperties$ = this.contentMetadataService.getBasicProperties(node); this.aspects$ = this.contentMetadataService.getAspectProperties(node, this.preset); } diff --git a/lib/content-services/content-metadata/public-api.ts b/lib/content-services/content-metadata/public-api.ts index 3067f3e186..ecb6235824 100644 --- a/lib/content-services/content-metadata/public-api.ts +++ b/lib/content-services/content-metadata/public-api.ts @@ -16,3 +16,4 @@ */ export * from './components/content-metadata-card/content-metadata-card.component'; +export { ContentMetadataModule } from './content-metadata.module';