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
JavaScript
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==