I am having problem with dynamic component rendering with 'ViewContainerRef' in a gridster item.
I have implemented a component which takes component reference, inputs and outputs as input and creates this given component inside itself.
ex: <app-component-loader [compRef]="{ref: ExComponent}"><app-component-loader>
inside component loader onInit callback I have
if (this.compRef && this.compRef.ref) {
this._componentFactory = this._componentFactoryResolver.resolveComponentFactory(this.compRef.ref);
const instance = this.viewContainer.createComponent(this._componentFactory, 0).instance;
console.log(instance);
if (this.compInputs) {
Object.getOwnPropertyNames(this.compInputs).forEach(field => {
instance[field] = this.compInputs[field];
});
}
if (this.compOutputs) {
Object.getOwnPropertyNames(this.compOutputs).forEach(field => {
instance[field].subscribe(e => {
this.compOutputs[field]();
});
});
}
}
I am using this component laoder into gridster item component like:
<gridster [options]="gridsterConfig">
<gridster-item [item]="widget" *ngFor="let widget of board.widgets">
<app-component-loader [compRef]="{ ref: registry.get(widget.outletComponent) }" [compInputs]="{ widget: widget }" [compOutputs]="{ removeCallback: widgetRemoveCallback.bind(this), changed: widgetChanged.bind(this) }"></app-component-loader>
</gridster-item>
</gridster>
It is working fine and loading gridster items and their outlet components while developing.
Hovewer today I tried to build my app with ng build --prod
and deploy to server I recognize that my component loader is not creating components.
Am I missing something special to dynamic component creation for production builds. I have searched about this but got nothing.
Before implementing my component loader component I was doing this component creation with ng-dynamic-component package and again it was working fine while developing but got exception which saying instance of component is NULL when production.
I think it is not the problem that the way of creating rendering the components but need help.
Additionally, my dependencies are:
"@angular/animations": "^5.2.9",
"@angular/cdk": "^6.0.2",
"@angular/common": "^5.2.9",
"@angular/compiler": "^5.2.9",
"@angular/core": "^5.2.9",
"@angular/flex-layout": "^5.0.0-beta.14",
"@angular/forms": "^5.2.9",
"@angular/http": "^5.2.9",
"@angular/platform-browser": "^5.2.9",
"@angular/platform-browser-dynamic": "^5.2.9"
"@angular/cli": "^1.7.3",
"@angular/compiler-cli": "^5.2.9",
"@angular/language-service": "^5.2.9",
Thank you all.