UNPKG

geminis-ng

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.14.

50 lines 6.2 kB
import { ComponentFactoryResolver, Directive, Input, ViewContainerRef } from '@angular/core'; import { formItemTypes } from '../../json-form/json-form-item/FormItem'; import { GnObjectUtils } from 'geminis-ng-core'; export class GnEditColumnDirective { constructor(resolver, container) { this.resolver = resolver; this.container = container; } set setRow(value) { this.row = value; this.setComponentRow(); } set setColumnConfig(config) { this.config = config; const editType = formItemTypes[config.type]; if (!editType) { throw new Error(`输入组件[${config.type}]未注册`); } const controlFactory = this.resolver.resolveComponentFactory(editType); this.component = this.container.createComponent(controlFactory); if (config.options) { for (const key of Object.keys(config.options)) { this.component.instance[key] = config.options[key]; } } this.setComponentRow(); } setComponentRow() { if (this.component) { this.component.instance.writeValue(GnObjectUtils.getValue(this.row, this.config.field)); this.component.instance.registerOnChange((value) => { this.row[this.config.field] = value; }); } } } GnEditColumnDirective.decorators = [ { type: Directive, args: [{ selector: '[gnEditColumn]' },] } ]; GnEditColumnDirective.ctorParameters = () => [ { type: ComponentFactoryResolver }, { type: ViewContainerRef } ]; GnEditColumnDirective.propDecorators = { setRow: [{ type: Input, args: ['row',] }], setColumnConfig: [{ type: Input, args: ['gnEditColumn',] }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1jb2x1bW4uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VtaW5pcy1uZy9zcmMvanNvbi10YWJsZS9lZGl0LWNvbHVtbi9lZGl0LWNvbHVtbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHdCQUF3QixFQUV4QixTQUFTLEVBQ1QsS0FBSyxFQUNMLGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDdEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBSzlDLE1BQU0sT0FBTyxxQkFBcUI7SUEyQmhDLFlBQW9CLFFBQWtDLEVBQ2xDLFNBQTJCO1FBRDNCLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ2xDLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBQy9DLENBQUM7SUF2QkQsSUFBa0IsTUFBTSxDQUFDLEtBQUs7UUFDNUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDakIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUEyQixlQUFlLENBQUMsTUFBMkI7UUFDcEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDO1NBQzVDO1FBQ0QsTUFBTSxjQUFjLEdBQTBCLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDbEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNwRDtTQUNGO1FBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFNTyxlQUFlO1FBQ3JCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN4RixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNqRCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7WUF6Q0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7YUFDM0I7OztZQVpDLHdCQUF3QjtZQUl4QixnQkFBZ0I7OztxQkFlZixLQUFLLFNBQUMsS0FBSzs4QkFLWCxLQUFLLFNBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudEZhY3RvcnksXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtHblRhYmxlQ29sdW1uQ29uZmlnfSBmcm9tICcuLi9UYWJsZUNvbHVtbkNvbmZpZyc7XG5pbXBvcnQge2Zvcm1JdGVtVHlwZXN9IGZyb20gJy4uLy4uL2pzb24tZm9ybS9qc29uLWZvcm0taXRlbS9Gb3JtSXRlbSc7XG5pbXBvcnQge0duT2JqZWN0VXRpbHN9IGZyb20gJ2dlbWluaXMtbmctY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tnbkVkaXRDb2x1bW5dJ1xufSlcbmV4cG9ydCBjbGFzcyBHbkVkaXRDb2x1bW5EaXJlY3RpdmUge1xuXG4gIHByaXZhdGUgY29tcG9uZW50OiBDb21wb25lbnRSZWY8YW55PjtcbiAgcHJpdmF0ZSByb3c6IGFueTtcbiAgcHJpdmF0ZSBjb25maWc6IEduVGFibGVDb2x1bW5Db25maWc7XG5cbiAgQElucHV0KCdyb3cnKSBzZXQgc2V0Um93KHZhbHVlKSB7XG4gICAgdGhpcy5yb3cgPSB2YWx1ZTtcbiAgICB0aGlzLnNldENvbXBvbmVudFJvdygpO1xuICB9XG5cbiAgQElucHV0KCdnbkVkaXRDb2x1bW4nKSBzZXQgc2V0Q29sdW1uQ29uZmlnKGNvbmZpZzogR25UYWJsZUNvbHVtbkNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIGNvbnN0IGVkaXRUeXBlID0gZm9ybUl0ZW1UeXBlc1tjb25maWcudHlwZV07XG4gICAgaWYgKCFlZGl0VHlwZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDovpPlhaXnu4Tku7ZbJHtjb25maWcudHlwZX1d5pyq5rOo5YaMYCk7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRyb2xGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PGFueT4gPSB0aGlzLnJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGVkaXRUeXBlKTtcbiAgICB0aGlzLmNvbXBvbmVudCA9IHRoaXMuY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb250cm9sRmFjdG9yeSk7XG4gICAgaWYgKGNvbmZpZy5vcHRpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb25maWcub3B0aW9ucykpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnQuaW5zdGFuY2Vba2V5XSA9IGNvbmZpZy5vcHRpb25zW2tleV07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2V0Q29tcG9uZW50Um93KCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gIH1cblxuICBwcml2YXRlIHNldENvbXBvbmVudFJvdygpIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnQpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50Lmluc3RhbmNlLndyaXRlVmFsdWUoR25PYmplY3RVdGlscy5nZXRWYWx1ZSh0aGlzLnJvdywgdGhpcy5jb25maWcuZmllbGQpKTtcbiAgICAgIHRoaXMuY29tcG9uZW50Lmluc3RhbmNlLnJlZ2lzdGVyT25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMucm93W3RoaXMuY29uZmlnLmZpZWxkXSA9IHZhbHVlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==