Fix declarative table display issues with ML ext (#13529)

* Fix declarative table display issues with ML ext

* Fix test
This commit is contained in:
Charles Gagnon
2020-11-24 12:55:04 -08:00
committed by GitHub
parent f4a6b42b3a
commit 40ca82c63d
6 changed files with 32 additions and 10 deletions

View File

@@ -280,7 +280,17 @@ export default class DeclarativeTableComponent extends ContainerBase<any, azdata
this.data?.forEach(row => {
for (let i = 0; i < row.length; i++) {
if (this.isComponent(i)) {
this.addToContainer(this.getItemDescriptor(row[i].value as string), undefined);
const itemDescriptor = this.getItemDescriptor(row[i].value as string);
if (itemDescriptor) {
this.addToContainer(itemDescriptor, {});
} else {
// This should ideally never happen but it's possible for a race condition to happen when adding/removing components quickly where
// the child component is unregistered after it is defined because a component is only unregistered when it's destroyed by Angular
// which can take a while and we don't wait on that to happen currently.
// While this happening isn't desirable it typically doesn't have a huge impact since the component will still be displayed properly in
// most cases
this.logService.warn(`Could not find ItemDescriptor for component ${row[i].value} when adding to DeclarativeTable ${this.descriptor.id}`);
}
}
}
});