component-injector
Version:
Component Injector service which allows to inject dynamically components into angular2+ projects
170 lines (164 loc) • 6.05 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core')) :
typeof define === 'function' && define.amd ? define('component-injector', ['exports', '@angular/core'], factory) :
(global = global || self, factory(global['component-injector'] = {}, global.ng.core));
}(this, function (exports, core) { 'use strict';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
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: core.Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
ComponentInjector.ctorParameters = function () { return [
{ type: core.ComponentFactoryResolver }
]; };
/** @nocollapse */ ComponentInjector.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function ComponentInjector_Factory() { return new ComponentInjector(core.ɵɵinject(core.ComponentFactoryResolver)); }, token: ComponentInjector, providedIn: "root" });
return ComponentInjector;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ComponentInjectorModule = /** @class */ (function () {
function ComponentInjectorModule() {
}
ComponentInjectorModule.decorators = [
{ type: core.NgModule, args: [{
declarations: [],
imports: [],
exports: []
},] }
];
return ComponentInjectorModule;
}());
exports.ComponentInjector = ComponentInjector;
exports.ComponentInjectorModule = ComponentInjectorModule;
Object.defineProperty(exports, '__esModule', { value: true });
}));
//# sourceMappingURL=component-injector.umd.js.map