UNPKG

component-injector

Version:

Component Injector service which allows to inject dynamically components into angular2+ projects

151 lines 9.99 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { ComponentFactoryResolver, Injectable } from '@angular/core'; import * as i0 from "@angular/core"; var ComponentInjector = /** @class */ (function () { function ComponentInjector(resolver) { this.resolver = resolver; } /** * @param {?} componentsList * @return {?} */ ComponentInjector.prototype.setComponentFactories = /** * @param {?} componentsList * @return {?} */ function (componentsList) { var _this = this; if (componentsList) { componentsList.forEach((/** * @param {?} component * @return {?} */ function (component) { /** @type {?} */ var factory = _this.resolver.resolveComponentFactory(component); if (factory) { ComponentInjector.entryComponentsFactories.push(factory); } })); } }; /** * @param {?} container * @param {?} componentSelector * @return {?} */ ComponentInjector.prototype.inject = /** * @param {?} container * @param {?} componentSelector * @return {?} */ function (container, componentSelector) { /** @type {?} */ var componentFactory = this.getComponentFactory(componentSelector); if (componentFactory) { return this.injectComponentFactory(container, componentFactory); } else { console.warn('Component [' + componentSelector + '] cannot be found! ' + 'Make sure it is included in the `entryComponents` list.'); } return null; }; /** * @param {?} componentRef * @param {?} properties * @return {?} */ ComponentInjector.prototype.setProperties = /** * @param {?} componentRef * @param {?} properties * @return {?} */ function (componentRef, properties) { if (componentRef) { for (var property in properties) { if (properties.hasOwnProperty(property)) { componentRef.instance[property] = properties[property]; } } } }; /** * @param {?} componentRef * @return {?} */ ComponentInjector.prototype.remove = /** * @param {?} componentRef * @return {?} */ function (componentRef) { if (componentRef) { componentRef.destroy(); } componentRef = null; }; /** * @protected * @param {?} componentSelector * @return {?} */ ComponentInjector.prototype.getComponentFactory = /** * @protected * @param {?} componentSelector * @return {?} */ function (componentSelector) { /** @type {?} */ var factories = ComponentInjector.entryComponentsFactories; /** @type {?} */ var componentFactory = factories.find((/** * @param {?} component * @return {?} */ function (component) { return component.selector === componentSelector; })); return componentFactory ? componentFactory : null; }; /** * @protected * @param {?} container * @param {?} componentFactory * @return {?} */ ComponentInjector.prototype.injectComponentFactory = /** * @protected * @param {?} container * @param {?} componentFactory * @return {?} */ function (container, componentFactory) { return container.createComponent(componentFactory); }; ComponentInjector.entryComponentsFactories = []; ComponentInjector.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ ComponentInjector.ctorParameters = function () { return [ { type: ComponentFactoryResolver } ]; }; /** @nocollapse */ ComponentInjector.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ComponentInjector_Factory() { return new ComponentInjector(i0.ɵɵinject(i0.ComponentFactoryResolver)); }, token: ComponentInjector, providedIn: "root" }); return ComponentInjector; }()); export { ComponentInjector }; if (false) { /** @type {?} */ ComponentInjector.entryComponentsFactories; /** * @type {?} * @private */ ComponentInjector.prototype.resolver; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWluamVjdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tcG9uZW50LWluamVjdG9yLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudC1pbmplY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUdMLHdCQUF3QixFQUN4QixVQUFVLEVBR1gsTUFBTSxlQUFlLENBQUM7O0FBRXZCO0lBT0UsMkJBQW9CLFFBQWtDO1FBQWxDLGFBQVEsR0FBUixRQUFRLENBQTBCO0lBRXRELENBQUM7Ozs7O0lBRU0saURBQXFCOzs7O0lBQTVCLFVBQTZCLGNBQWlDO1FBQTlELGlCQVNDO1FBUkMsSUFBSSxjQUFjLEVBQUU7WUFDbEIsY0FBYyxDQUFDLE9BQU87Ozs7WUFBQyxVQUFDLFNBQTBCOztvQkFDNUMsT0FBTyxHQUFHLEtBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDO2dCQUM5RCxJQUFJLE9BQU8sRUFBRTtvQkFDWCxpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzFEO1lBQ0gsQ0FBQyxFQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Ozs7OztJQUVELGtDQUFNOzs7OztJQUFOLFVBQU8sU0FBMkIsRUFBRSxpQkFBeUI7O1lBQ3ZELGdCQUFnQixHQUEwQixJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUM7UUFDekYsSUFBSSxnQkFBZ0IsRUFBRTtZQUNwQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUNqRTthQUNJO1lBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsaUJBQWlCLEdBQUcscUJBQXFCO2dCQUNwRSx5REFBeUQsQ0FBQyxDQUFDO1NBQzlEO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7Ozs7SUFFRCx5Q0FBYTs7Ozs7SUFBYixVQUFjLFlBQStCLEVBQUUsVUFBZTtRQUM1RCxJQUFJLFlBQVksRUFBRTtZQUNoQixLQUFLLElBQUksUUFBUSxJQUFJLFVBQVUsRUFBRTtnQkFDL0IsSUFBSSxVQUFVLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUN2QyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDeEQ7YUFDRjtTQUNGO0lBQ0gsQ0FBQzs7Ozs7SUFFRCxrQ0FBTTs7OztJQUFOLFVBQU8sWUFBc0M7UUFDM0MsSUFBSSxZQUFZLEVBQUU7WUFDaEIsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3hCO1FBQ0QsWUFBWSxHQUFHLElBQUksQ0FBQztJQUN0QixDQUFDOzs7Ozs7SUFFUywrQ0FBbUI7Ozs7O0lBQTdCLFVBQThCLGlCQUF5Qjs7WUFDakQsU0FBUyxHQUFHLGlCQUFpQixDQUFDLHdCQUF3Qjs7WUFDdEQsZ0JBQWdCLEdBQVEsU0FBUyxDQUFDLElBQUk7Ozs7UUFBQyxVQUFDLFNBQWM7WUFDeEQsT0FBTyxTQUFTLENBQUMsUUFBUSxLQUFLLGlCQUFpQixDQUFDO1FBQ2xELENBQUMsRUFBQztRQUVGLE9BQU8sZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDcEQsQ0FBQzs7Ozs7OztJQUVTLGtEQUFzQjs7Ozs7O0lBQWhDLFVBQWlDLFNBQTJCLEVBQUUsZ0JBQXVDO1FBQ25HLE9BQU8sU0FBUyxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUEzRGEsMENBQXdCLEdBQTRCLEVBQUUsQ0FBQzs7Z0JBSnRFLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBUkMsd0JBQXdCOzs7NEJBSDFCO0NBeUVDLEFBaEVELElBZ0VDO1NBN0RZLGlCQUFpQjs7O0lBQzVCLDJDQUFxRTs7Ozs7SUFHekQscUNBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRGYWN0b3J5LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIENvbXBvbmVudFJlZixcbiAgSW5qZWN0YWJsZSxcbiAgVHlwZSxcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50SW5qZWN0b3Ige1xuICBwdWJsaWMgc3RhdGljIGVudHJ5Q29tcG9uZW50c0ZhY3RvcmllczogQ29tcG9uZW50RmFjdG9yeTxhbnk+W10gPSBbXTtcblxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikge1xuXG4gIH1cblxuICBwdWJsaWMgc2V0Q29tcG9uZW50RmFjdG9yaWVzKGNvbXBvbmVudHNMaXN0OiBUeXBlPENvbXBvbmVudD5bXSk6IHZvaWQge1xuICAgIGlmIChjb21wb25lbnRzTGlzdCkge1xuICAgICAgY29tcG9uZW50c0xpc3QuZm9yRWFjaCgoY29tcG9uZW50OiBUeXBlPENvbXBvbmVudD4pID0+IHtcbiAgICAgICAgbGV0IGZhY3RvcnkgPSB0aGlzLnJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudCk7XG4gICAgICAgIGlmIChmYWN0b3J5KSB7XG4gICAgICAgICAgQ29tcG9uZW50SW5qZWN0b3IuZW50cnlDb21wb25lbnRzRmFjdG9yaWVzLnB1c2goZmFjdG9yeSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGluamVjdChjb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsIGNvbXBvbmVudFNlbGVjdG9yOiBzdHJpbmcpOiBDb21wb25lbnRSZWY8YW55PiB8IG51bGwge1xuICAgIGxldCBjb21wb25lbnRGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PGFueT4gPSB0aGlzLmdldENvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50U2VsZWN0b3IpO1xuICAgIGlmIChjb21wb25lbnRGYWN0b3J5KSB7XG4gICAgICByZXR1cm4gdGhpcy5pbmplY3RDb21wb25lbnRGYWN0b3J5KGNvbnRhaW5lciwgY29tcG9uZW50RmFjdG9yeSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdDb21wb25lbnQgWycgKyBjb21wb25lbnRTZWxlY3RvciArICddIGNhbm5vdCBiZSBmb3VuZCEgJyArXG4gICAgICAgICdNYWtlIHN1cmUgaXQgaXMgaW5jbHVkZWQgaW4gdGhlIGBlbnRyeUNvbXBvbmVudHNgIGxpc3QuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzZXRQcm9wZXJ0aWVzKGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4sIHByb3BlcnRpZXM6IGFueSk6IHZvaWQge1xuICAgIGlmIChjb21wb25lbnRSZWYpIHtcbiAgICAgIGZvciAobGV0IHByb3BlcnR5IGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKHByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKSB7XG4gICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlW3Byb3BlcnR5XSA9IHByb3BlcnRpZXNbcHJvcGVydHldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlKGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4gfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKGNvbXBvbmVudFJlZikge1xuICAgICAgY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgY29tcG9uZW50UmVmID0gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudFNlbGVjdG9yOiBzdHJpbmcpOiBDb21wb25lbnRGYWN0b3J5PGFueT4ge1xuICAgIGxldCBmYWN0b3JpZXMgPSBDb21wb25lbnRJbmplY3Rvci5lbnRyeUNvbXBvbmVudHNGYWN0b3JpZXM7XG4gICAgbGV0IGNvbXBvbmVudEZhY3Rvcnk6IGFueSA9IGZhY3Rvcmllcy5maW5kKChjb21wb25lbnQ6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIGNvbXBvbmVudC5zZWxlY3RvciA9PT0gY29tcG9uZW50U2VsZWN0b3I7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29tcG9uZW50RmFjdG9yeSA/IGNvbXBvbmVudEZhY3RvcnkgOiBudWxsO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluamVjdENvbXBvbmVudEZhY3RvcnkoY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLCBjb21wb25lbnRGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PGFueT4pOiBDb21wb25lbnRSZWY8YW55PiB7XG4gICAgcmV0dXJuIGNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50RmFjdG9yeSk7XG4gIH1cbn1cbiJdfQ==