Now that ComponentResolver is deprecated how can we dynamically load a
component and:
1) Insert it based on a dynamic selector string.
2) Pass inputs to the component.
My old code looked like this:
componentPromises.push(this._componentResolver.resolveComponent(WidgetContainerComponent).then((factory:
ComponentFactory<any>) => {
let widgetId: string = this._widgetIdPrefix +
dashboardItem.widgetConfig.widgetId;
// Dynamically build the selector string.
let selectorString: string = "[id=" + widgetId + "]";
let componentRef = factory.create(this._injector, null, selectorString);
// Manually set the dashboardItem Input so that the WidgetContainer knows how
to build itself.
componentRef.instance["dashboardItem"] = dashboardItem;
componentRef.instance["refreshObservable"] = this.refreshObservable;
// Register the component with appRef change detector, this is critical,
without it life cycle events, bindings, etc. will not work.
(<any>this._appRef)._loadComponent(componentRef);
}));
The ComponentFactoryResolve doesn't appear to support this and the examples
I have seen seem to use a static ViewContainerRef
(http://plnkr.co/edit/P0spNzu8JbQad2aKACsX?p=info).
--
You received this message because you are subscribed to the Google Groups
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.