@xmagic/nz-formly
Version:
基于ng-zorro-antd UI 扩展的ngx-formly组件库
97 lines • 10.6 kB
JavaScript
import { ContentChildren, Directive, EventEmitter, Input, Output } from '@angular/core';
import { NamedTemplate } from '@xmagic/nzx-antd/directive';
import * as i0 from "@angular/core";
export class FormlyBoxTemplates {
tplMap = new Map();
templateList;
templateChange = new EventEmitter();
namedTemplate;
get templates() {
return this.tplMap;
}
/**
* 根据模板名称获取TemplateRef
* @param templateName 模板名称
*/
get(templateName) {
return this.tplMap.get(templateName);
}
constructor() { }
ngAfterContentInit() {
this.update();
this.namedTemplate.changes.subscribe(v => {
this.update();
});
}
update(emitChange = true) {
this.tplMap.clear();
this.mergeTemplate(this.tplMap, emitChange);
}
ngOnChanges(changes) {
if (changes.templateList && !changes.templateList.isFirstChange()) {
this.update();
}
}
/**
* 合并参数模板
* @param tplMap
* @param emitChange
*/
mergeTemplate(tplMap, emitChange = true) {
this.mergeTemplates(tplMap, this.templateList);
this.mergeQueryTemplate(tplMap, this.namedTemplate);
this.templateChange.emit(tplMap);
}
/**
* 合并content 模板
* @param tplMap
* @param templateList
* @private
*/
mergeQueryTemplate(tplMap, templateList) {
if (templateList) {
templateList.forEach(v => {
tplMap.set(v.named, v.template);
});
}
}
/**
* 合并魔板列表
* @param tplMap 模板Map
* @param templateList
*/
mergeTemplates(tplMap, templateList) {
if (!templateList) {
return;
}
templateList.forEach(v => {
if (v instanceof NamedTemplate) {
tplMap.set(v.named, v.template);
}
else {
const namedTpl = new NamedTemplate(v);
namedTpl.resolveName();
tplMap.set(namedTpl.named, namedTpl.template);
}
});
return;
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormlyBoxTemplates, deps: [], target: i0.ɵɵFactoryTarget.Directive });
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FormlyBoxTemplates, selector: "[formly-box]", inputs: { templateList: ["formly-box", "templateList"] }, outputs: { templateChange: "templateChange" }, queries: [{ propertyName: "namedTemplate", predicate: NamedTemplate }], exportAs: ["FormlyBox"], usesOnChanges: true, ngImport: i0 });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormlyBoxTemplates, decorators: [{
type: Directive,
args: [{
selector: '[formly-box]',
exportAs: 'FormlyBox'
}]
}], ctorParameters: () => [], propDecorators: { templateList: [{
type: Input,
args: ['formly-box']
}], templateChange: [{
type: Output
}], namedTemplate: [{
type: ContentChildren,
args: [NamedTemplate]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWJveC10ZW1wbGF0ZXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2NvbW1vbi9mb3JtbHktYm94LXRlbXBsYXRlcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGVBQWUsRUFDZixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBS1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQU8zRCxNQUFNLE9BQU8sa0JBQWtCO0lBQ3JCLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztJQUN0QyxZQUFZLENBQWdCO0lBQ3ZDLGNBQWMsR0FBRyxJQUFJLFlBQVksRUFBdUMsQ0FBQztJQUNuRCxhQUFhLENBQXVDO0lBRXBGLElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsR0FBRyxDQUFDLFlBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGdCQUFlLENBQUM7SUFFaEIsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN2QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJO1FBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBNkQ7UUFDdkUsSUFBSSxPQUFPLENBQUMsWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUNqRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDZjtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYSxDQUFDLE1BQTJDLEVBQUUsVUFBVSxHQUFHLElBQUk7UUFDMUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGtCQUFrQixDQUN4QixNQUEyQyxFQUMzQyxZQUFrRDtRQUVsRCxJQUFJLFlBQVksRUFBRTtZQUNoQixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN2QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGNBQWMsQ0FBQyxNQUEyQyxFQUFFLFlBQTJCO1FBQzdGLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakIsT0FBTztTQUNSO1FBRUQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN2QixJQUFJLENBQUMsWUFBWSxhQUFhLEVBQUU7Z0JBQzlCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDakM7aUJBQU07Z0JBQ0wsTUFBTSxRQUFRLEdBQUcsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMvQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTztJQUNULENBQUM7d0dBdkZVLGtCQUFrQjs0RkFBbEIsa0JBQWtCLDJMQUlaLGFBQWE7OzRGQUpuQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFFBQVEsRUFBRSxXQUFXO2lCQUN0Qjt3REFHc0IsWUFBWTtzQkFBaEMsS0FBSzt1QkFBQyxZQUFZO2dCQUNULGNBQWM7c0JBQXZCLE1BQU07Z0JBQ3lCLGFBQWE7c0JBQTVDLGVBQWU7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBTaW1wbGVDaGFuZ2UsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBUZW1wbGF0ZVJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYW1lZFRlbXBsYXRlIH0gZnJvbSAnQHhtYWdpYy9uengtYW50ZC9kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZm9ybWx5LWJveF0nLFxyXG4gIGV4cG9ydEFzOiAnRm9ybWx5Qm94J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybWx5Qm94VGVtcGxhdGVzIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzIHtcclxuICBwcml2YXRlIHRwbE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBUZW1wbGF0ZVJlZjxOelNhZmVBbnk+PigpO1xyXG4gIEBJbnB1dCgnZm9ybWx5LWJveCcpIHRlbXBsYXRlTGlzdD86IFRlbXBsYXRlTGlzdDtcclxuICBAT3V0cHV0KCkgdGVtcGxhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1hcDxzdHJpbmcsIFRlbXBsYXRlUmVmPE56U2FmZUFueT4+PigpO1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oTmFtZWRUZW1wbGF0ZSkgbmFtZWRUZW1wbGF0ZSE6IFF1ZXJ5TGlzdDxOYW1lZFRlbXBsYXRlPE56U2FmZUFueT4+O1xyXG5cclxuICBnZXQgdGVtcGxhdGVzKCk6IE1hcDxzdHJpbmcsIFRlbXBsYXRlUmVmPE56U2FmZUFueT4+IHtcclxuICAgIHJldHVybiB0aGlzLnRwbE1hcDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOagueaNruaooeadv+WQjeensOiOt+WPllRlbXBsYXRlUmVmXHJcbiAgICogQHBhcmFtIHRlbXBsYXRlTmFtZSDmqKHmnb/lkI3np7BcclxuICAgKi9cclxuICBnZXQodGVtcGxhdGVOYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZVJlZjxOelNhZmVBbnk+IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnRwbE1hcC5nZXQodGVtcGxhdGVOYW1lKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuICAgIHRoaXMubmFtZWRUZW1wbGF0ZS5jaGFuZ2VzLnN1YnNjcmliZSh2ID0+IHtcclxuICAgICAgdGhpcy51cGRhdGUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlKGVtaXRDaGFuZ2UgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnRwbE1hcC5jbGVhcigpO1xyXG4gICAgdGhpcy5tZXJnZVRlbXBsYXRlKHRoaXMudHBsTWFwLCBlbWl0Q2hhbmdlKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHsgW0sgaW4ga2V5b2YgdGhpc10/OiBTaW1wbGVDaGFuZ2UgfSAmIFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzLnRlbXBsYXRlTGlzdCAmJiAhY2hhbmdlcy50ZW1wbGF0ZUxpc3QuaXNGaXJzdENoYW5nZSgpKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlkIjlubblj4LmlbDmqKHmnb9cclxuICAgKiBAcGFyYW0gdHBsTWFwXHJcbiAgICogQHBhcmFtIGVtaXRDaGFuZ2VcclxuICAgKi9cclxuICBtZXJnZVRlbXBsYXRlKHRwbE1hcDogTWFwPHN0cmluZywgVGVtcGxhdGVSZWY8TnpTYWZlQW55Pj4sIGVtaXRDaGFuZ2UgPSB0cnVlKSB7XHJcbiAgICB0aGlzLm1lcmdlVGVtcGxhdGVzKHRwbE1hcCwgdGhpcy50ZW1wbGF0ZUxpc3QpO1xyXG4gICAgdGhpcy5tZXJnZVF1ZXJ5VGVtcGxhdGUodHBsTWFwLCB0aGlzLm5hbWVkVGVtcGxhdGUpO1xyXG4gICAgdGhpcy50ZW1wbGF0ZUNoYW5nZS5lbWl0KHRwbE1hcCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlkIjlubZjb250ZW50IOaooeadv1xyXG4gICAqIEBwYXJhbSB0cGxNYXBcclxuICAgKiBAcGFyYW0gdGVtcGxhdGVMaXN0XHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIG1lcmdlUXVlcnlUZW1wbGF0ZShcclxuICAgIHRwbE1hcDogTWFwPHN0cmluZywgVGVtcGxhdGVSZWY8TnpTYWZlQW55Pj4sXHJcbiAgICB0ZW1wbGF0ZUxpc3Q/OiBRdWVyeUxpc3Q8TmFtZWRUZW1wbGF0ZTxOelNhZmVBbnk+PlxyXG4gICk6IHZvaWQge1xyXG4gICAgaWYgKHRlbXBsYXRlTGlzdCkge1xyXG4gICAgICB0ZW1wbGF0ZUxpc3QuZm9yRWFjaCh2ID0+IHtcclxuICAgICAgICB0cGxNYXAuc2V0KHYubmFtZWQsIHYudGVtcGxhdGUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWQiOW5tumtlOadv+WIl+ihqFxyXG4gICAqIEBwYXJhbSB0cGxNYXAg5qih5p2/TWFwXHJcbiAgICogQHBhcmFtIHRlbXBsYXRlTGlzdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgbWVyZ2VUZW1wbGF0ZXModHBsTWFwOiBNYXA8c3RyaW5nLCBUZW1wbGF0ZVJlZjxOelNhZmVBbnk+PiwgdGVtcGxhdGVMaXN0PzogVGVtcGxhdGVMaXN0KTogdm9pZCB7XHJcbiAgICBpZiAoIXRlbXBsYXRlTGlzdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGVtcGxhdGVMaXN0LmZvckVhY2godiA9PiB7XHJcbiAgICAgIGlmICh2IGluc3RhbmNlb2YgTmFtZWRUZW1wbGF0ZSkge1xyXG4gICAgICAgIHRwbE1hcC5zZXQodi5uYW1lZCwgdi50ZW1wbGF0ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbmFtZWRUcGwgPSBuZXcgTmFtZWRUZW1wbGF0ZSh2KTtcclxuICAgICAgICBuYW1lZFRwbC5yZXNvbHZlTmFtZSgpO1xyXG4gICAgICAgIHRwbE1hcC5zZXQobmFtZWRUcGwubmFtZWQsIG5hbWVkVHBsLnRlbXBsYXRlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIOmtlOadv+WIl+ihqFxyXG4gKi9cclxuZXhwb3J0IHR5cGUgVGVtcGxhdGVMaXN0ID1cclxuICB8IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjxOelNhZmVBbnk+PlxyXG4gIHwgUXVlcnlMaXN0PE5hbWVkVGVtcGxhdGU8TnpTYWZlQW55Pj5cclxuICB8IE5hbWVkVGVtcGxhdGU8TnpTYWZlQW55PltdO1xyXG4iXX0=