@yoyoboot/l-52abp-ng-form-generator
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.0.
60 lines • 8.35 kB
JavaScript
import { Component, Input } from '@angular/core';
import { DynamicComponentFactoryService } from './dynamic-component-factory.service';
import { DynamicComponentTerminatorService } from './dynamic-component-terminator.service';
import { Subject } from 'rxjs';
import * as i0 from "@angular/core";
import * as i1 from "./dynamic-component-factory.service";
import * as i2 from "./dynamic-component-terminator.service";
export class DynamicComponentComponent {
constructor(viewContainerRef, factory, terminator) {
this.viewContainerRef = viewContainerRef;
this.factory = factory;
this.terminator = terminator;
this.unsubscribe$ = new Subject();
}
ngOnInit() {
this.terminator.onDestroy.subscribe(() => this.ngOnDestroy());
}
ngOnChanges(changes) {
if (changes.is && changes.is.currentValue) {
const is = changes.is.currentValue;
if (this.ref) {
this.viewContainerRef.remove(0);
}
if (typeof is === 'string') {
this.ref = this.factory.createByName(this.viewContainerRef, is);
}
else {
this.ref = this.factory.createByType(this.viewContainerRef, is);
}
}
// 输入参数
if (changes.data && changes.data.currentValue && typeof changes.data.currentValue === 'object') {
if (this.ref) {
this.ref.instance.config = changes.data.currentValue;
}
}
}
ngOnDestroy() {
const { unsubscribe$ } = this;
unsubscribe$.next();
unsubscribe$.complete();
this.ref.destroy();
}
}
DynamicComponentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: DynamicComponentComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.DynamicComponentFactoryService }, { token: i2.DynamicComponentTerminatorService }], target: i0.ɵɵFactoryTarget.Component });
DynamicComponentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: DynamicComponentComponent, selector: "[d-component]", inputs: { is: "is", data: "data" }, providers: [DynamicComponentFactoryService, DynamicComponentTerminatorService], usesOnChanges: true, ngImport: i0, template: ``, isInline: true });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: DynamicComponentComponent, decorators: [{
type: Component,
args: [{
// eslint-disable-next-line @angular-eslint/component-selector
selector: '[d-component]',
template: ``,
providers: [DynamicComponentFactoryService, DynamicComponentTerminatorService]
}]
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i1.DynamicComponentFactoryService }, { type: i2.DynamicComponentTerminatorService }]; }, propDecorators: { is: [{
type: Input
}], data: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbC01MmFicC1uZy1mb3JtLWdlbmVyYXRvci9zcmMvZHluYW1pYy1jb21wb25lbnQvZHluYW1pYy1jb21wb25lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBSVQsS0FBSyxFQU9OLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzNGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFTL0IsTUFBTSxPQUFPLHlCQUF5QjtJQVNwQyxZQUNTLGdCQUFrQyxFQUNsQyxPQUF1QyxFQUN0QyxVQUE2QztRQUY5QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQWdDO1FBQ3RDLGVBQVUsR0FBVixVQUFVLENBQW1DO1FBTDlDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQU16QyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLEVBQUUsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRTtZQUN6QyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQztZQUNuQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNqQztZQUVELElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFO2dCQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUNqRTtpQkFBTTtnQkFDTCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUNqRTtTQUNGO1FBQ0QsT0FBTztRQUNQLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLLFFBQVEsRUFBRTtZQUM5RixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2FBQ3REO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDOUIsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JCLENBQUM7O3VIQTdDVSx5QkFBeUI7MkdBQXpCLHlCQUF5Qiw0RUFGekIsQ0FBQyw4QkFBOEIsRUFBRSxpQ0FBaUMsQ0FBQywrQ0FEcEUsRUFBRTs0RkFHRCx5QkFBeUI7a0JBTnJDLFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osU0FBUyxFQUFFLENBQUMsOEJBQThCLEVBQUUsaUNBQWlDLENBQUM7aUJBQy9FO29NQUVVLEVBQUU7c0JBQVYsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVHlwZSxcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnRGYWN0b3J5U2VydmljZSB9IGZyb20gJy4vZHluYW1pYy1jb21wb25lbnQtZmFjdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnRUZXJtaW5hdG9yU2VydmljZSB9IGZyb20gJy4vZHluYW1pYy1jb21wb25lbnQtdGVybWluYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElEeW5hbWljQ29tcG9uZW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnW2QtY29tcG9uZW50XScsXG4gIHRlbXBsYXRlOiBgYCxcbiAgcHJvdmlkZXJzOiBbRHluYW1pY0NvbXBvbmVudEZhY3RvcnlTZXJ2aWNlLCBEeW5hbWljQ29tcG9uZW50VGVybWluYXRvclNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNDb21wb25lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgaXM6IHN0cmluZyB8IFR5cGU8SUR5bmFtaWNDb21wb25lbnQ+O1xuXG4gIEBJbnB1dCgpIGRhdGE6IGFueTtcblxuICByZWY6IENvbXBvbmVudFJlZjxJRHluYW1pY0NvbXBvbmVudD47XG5cbiAgcmVhZG9ubHkgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwdWJsaWMgZmFjdG9yeTogRHluYW1pY0NvbXBvbmVudEZhY3RvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGVybWluYXRvcjogRHluYW1pY0NvbXBvbmVudFRlcm1pbmF0b3JTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRlcm1pbmF0b3Iub25EZXN0cm95LnN1YnNjcmliZSgoKSA9PiB0aGlzLm5nT25EZXN0cm95KCkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmlzICYmIGNoYW5nZXMuaXMuY3VycmVudFZhbHVlKSB7XG4gICAgICBjb25zdCBpcyA9IGNoYW5nZXMuaXMuY3VycmVudFZhbHVlO1xuICAgICAgaWYgKHRoaXMucmVmKSB7XG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5yZW1vdmUoMCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgaXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMucmVmID0gdGhpcy5mYWN0b3J5LmNyZWF0ZUJ5TmFtZSh0aGlzLnZpZXdDb250YWluZXJSZWYsIGlzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVmID0gdGhpcy5mYWN0b3J5LmNyZWF0ZUJ5VHlwZSh0aGlzLnZpZXdDb250YWluZXJSZWYsIGlzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8g6L6T5YWl5Y+C5pWwXG4gICAgaWYgKGNoYW5nZXMuZGF0YSAmJiBjaGFuZ2VzLmRhdGEuY3VycmVudFZhbHVlICYmIHR5cGVvZiBjaGFuZ2VzLmRhdGEuY3VycmVudFZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKHRoaXMucmVmKSB7XG4gICAgICAgIHRoaXMucmVmLmluc3RhbmNlLmNvbmZpZyA9IGNoYW5nZXMuZGF0YS5jdXJyZW50VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgY29uc3QgeyB1bnN1YnNjcmliZSQgfSA9IHRoaXM7XG4gICAgdW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB1bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICB0aGlzLnJlZi5kZXN0cm95KCk7XG4gIH1cbn1cbiJdfQ==