Skip to content

Commit 5e32b15

Browse files
committed
allow using lazy loadable renderers
1 parent a32e454 commit 5e32b15

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

packages/angular/src/library/jsonforms.component.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
*/
2525
import maxBy from 'lodash/maxBy';
2626
import {
27+
ComponentFactory,
2728
ComponentFactoryResolver,
2829
Directive,
2930
Input,
@@ -126,11 +127,32 @@ export class JsonFormsOutlet
126127
renderer !== undefined &&
127128
renderer.tester(uischema, schema, testerContext) !== -1
128129
) {
129-
bestComponent = renderer.renderer;
130+
if (renderer.renderer instanceof Promise) {
131+
renderer.renderer.then((resolvedRenderer) => {
132+
bestComponent = resolvedRenderer;
133+
const componentFactory =
134+
this.componentFactoryResolver.resolveComponentFactory(
135+
bestComponent
136+
);
137+
this.renderComponent(componentFactory, uischema, schema, props);
138+
});
139+
return;
140+
} else {
141+
bestComponent = renderer.renderer;
142+
}
130143
}
131144

132145
const componentFactory =
133146
this.componentFactoryResolver.resolveComponentFactory(bestComponent);
147+
this.renderComponent(componentFactory, uischema, schema, props);
148+
}
149+
150+
private renderComponent(
151+
componentFactory: ComponentFactory<any>,
152+
uischema: UISchemaElement,
153+
schema: JsonSchema,
154+
props: JsonFormsProps
155+
) {
134156
this.viewContainerRef.clear();
135157
const currentComponentRef =
136158
this.viewContainerRef.createComponent(componentFactory);

0 commit comments

Comments
 (0)