UNPKG

cocori-ng

Version:

Cocori-ng is an Angular full of great components & utilites based on Material

50 lines (49 loc) 8.08 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; export class InjectComponentService { constructor() { this.componentsRefs = []; } /** * Exemple d'utilisation: * this.injectComponentService.loadAndAddComponentToContainer(MyClasseComponent, #DomReference, { @InputName_1: Value, @InputName_2: Value }, { @OutputName_1: (valueEmited: any) => this.callback(valueEmited)}) * Ou si le composant n'a pas de @Output * this.injectComponentService.loadAndAddComponentToContainer(MyClasseComponent, #DomReference, { @InputName_1: Value, @InputName_2: Value }, null) */ loadAndAddComponentToContainer(componentClass, viewContainerRef, inputs, outputs, index) { // const factory = this.componentFactoryResolver.resolveComponentFactory(componentClass); const componentRef = viewContainerRef.createComponent(componentClass, { index: index ? index : null }); /** inputs */ for (const [key, value] of Object.entries(inputs)) { (componentRef.instance)[key] = value; } /** outputs */ if (outputs) { for (const [key, value] of Object.entries(outputs)) { if (key && value && (componentRef.instance)[key]) (componentRef.instance)[key].subscribe(data => value(data)); } } componentRef.changeDetectorRef.detectChanges(); this.componentsRefs.push(componentRef); } removeComponentFromViewContainer(index, viewContainerRef) { viewContainerRef.remove(index); this.componentsRefs.splice(index, 1); } moveComponentFromViewContainer(currentIndex, previousIndex, viewContainerRef) { viewContainerRef.move(viewContainerRef.get(previousIndex), currentIndex); this.componentsRefs.splice(previousIndex, 0, this.componentsRefs.splice(currentIndex, 1)[0]); } } InjectComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: InjectComponentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); InjectComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: InjectComponentService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: InjectComponentService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LWNvbXBvbmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29jb3JpLW5nL3NyYy9mZWF0dXJlLWNvcmUvc2VydmljZS9pbmplY3QtY29tcG9uZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBMEIsTUFBTSxlQUFlLENBQUM7O0FBYW5FLE1BQU0sT0FBTyxzQkFBc0I7SUFIbkM7UUFJSSxtQkFBYyxHQUFVLEVBQUUsQ0FBQztLQWlEOUI7SUEvQ0c7Ozs7Ozs7O09BUUc7SUFDSCw4QkFBOEIsQ0FDMUIsY0FBeUIsRUFDekIsZ0JBQWtDLEVBQ2xDLE1BQXVCLEVBQ3ZCLE9BQTBCLEVBQzFCLEtBQWM7UUFFZCx5RkFBeUY7UUFDekYsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUV2RyxhQUFhO1FBQ2IsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDL0MsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQ3hDO1FBRUQsY0FBYztRQUNkLElBQUksT0FBTyxFQUFFO1lBQ1QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ2hELElBQUksR0FBRyxJQUFJLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUM7b0JBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDakg7U0FDSjtRQUVELFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUUvQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsZ0NBQWdDLENBQUMsS0FBYSxFQUFFLGdCQUFrQztRQUM5RSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxZQUFvQixFQUFFLGFBQXFCLEVBQUUsZ0JBQWtDO1FBQzFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFekUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRyxDQUFDOzttSEFqRFEsc0JBQXNCO3VIQUF0QixzQkFBc0IsY0FGbkIsTUFBTTsyRkFFVCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbnB1dHNDb21wb25lbnQge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dHNDb21wb25lbnQge1xyXG4gICAgW2tleTogc3RyaW5nXTogRnVuY3Rpb247XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEluamVjdENvbXBvbmVudFNlcnZpY2Uge1xyXG4gICAgY29tcG9uZW50c1JlZnM6IGFueVtdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFeGVtcGxlIGQndXRpbGlzYXRpb246XHJcbiAgICAgXHJcbiAgICAgKiB0aGlzLmluamVjdENvbXBvbmVudFNlcnZpY2UubG9hZEFuZEFkZENvbXBvbmVudFRvQ29udGFpbmVyKE15Q2xhc3NlQ29tcG9uZW50LCAjRG9tUmVmZXJlbmNlLFxyXG4gICAgICAgICAgICB7IEBJbnB1dE5hbWVfMTogVmFsdWUsIEBJbnB1dE5hbWVfMjogVmFsdWUgfSwgeyBAT3V0cHV0TmFtZV8xOiAodmFsdWVFbWl0ZWQ6IGFueSkgPT4gdGhpcy5jYWxsYmFjayh2YWx1ZUVtaXRlZCl9KVxyXG4gICAgICogT3Ugc2kgbGUgY29tcG9zYW50IG4nYSBwYXMgZGUgQE91dHB1dFxyXG4gICAgICogdGhpcy5pbmplY3RDb21wb25lbnRTZXJ2aWNlLmxvYWRBbmRBZGRDb21wb25lbnRUb0NvbnRhaW5lcihNeUNsYXNzZUNvbXBvbmVudCwgI0RvbVJlZmVyZW5jZSxcclxuICAgICAgICAgICAgeyBASW5wdXROYW1lXzE6IFZhbHVlLCBASW5wdXROYW1lXzI6IFZhbHVlIH0sIG51bGwpXHJcbiAgICAgKi9cclxuICAgIGxvYWRBbmRBZGRDb21wb25lbnRUb0NvbnRhaW5lcihcclxuICAgICAgICBjb21wb25lbnRDbGFzczogVHlwZTxhbnk+LFxyXG4gICAgICAgIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgICAgaW5wdXRzOiBJbnB1dHNDb21wb25lbnQsXHJcbiAgICAgICAgb3V0cHV0cz86IE91dHB1dHNDb21wb25lbnQsXHJcbiAgICAgICAgaW5kZXg/OiBudW1iZXJcclxuICAgICkge1xyXG4gICAgICAgIC8vIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnRDbGFzcyk7XHJcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50Q2xhc3MsIHsgaW5kZXg6IGluZGV4ID8gaW5kZXggOiBudWxsIH0pO1xyXG5cclxuICAgICAgICAvKiogaW5wdXRzICovXHJcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoaW5wdXRzKSkge1xyXG4gICAgICAgICAgICAoY29tcG9uZW50UmVmLmluc3RhbmNlKVtrZXldID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiogb3V0cHV0cyAqL1xyXG4gICAgICAgIGlmIChvdXRwdXRzKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG91dHB1dHMpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5ICYmIHZhbHVlICYmIChjb21wb25lbnRSZWYuaW5zdGFuY2UpW2tleV0pIChjb21wb25lbnRSZWYuaW5zdGFuY2UpW2tleV0uc3Vic2NyaWJlKGRhdGEgPT4gdmFsdWUoZGF0YSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgICAgICB0aGlzLmNvbXBvbmVudHNSZWZzLnB1c2goY29tcG9uZW50UmVmKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVDb21wb25lbnRGcm9tVmlld0NvbnRhaW5lcihpbmRleDogbnVtYmVyLCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICAgICAgdmlld0NvbnRhaW5lclJlZi5yZW1vdmUoaW5kZXgpO1xyXG5cclxuICAgICAgICB0aGlzLmNvbXBvbmVudHNSZWZzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgbW92ZUNvbXBvbmVudEZyb21WaWV3Q29udGFpbmVyKGN1cnJlbnRJbmRleDogbnVtYmVyLCBwcmV2aW91c0luZGV4OiBudW1iZXIsIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICAgICAgICB2aWV3Q29udGFpbmVyUmVmLm1vdmUodmlld0NvbnRhaW5lclJlZi5nZXQocHJldmlvdXNJbmRleCksIGN1cnJlbnRJbmRleCk7XHJcblxyXG4gICAgICAgIHRoaXMuY29tcG9uZW50c1JlZnMuc3BsaWNlKHByZXZpb3VzSW5kZXgsIDAsIHRoaXMuY29tcG9uZW50c1JlZnMuc3BsaWNlKGN1cnJlbnRJbmRleCwgMSlbMF0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==