UNPKG

ng-dynamic-component

Version:

> Dynamic components with full life-cycle support for inputs and outputs

30 lines 4.07 kB
import { Injectable } from '@angular/core'; // @ts-ignore import { outputToObservable } from '@angular/core/rxjs-interop'; import { isObservable } from 'rxjs'; import * as i0 from "@angular/core"; /** @internal */ export class SignalComponentIO { setInput(componentRef, name, value) { componentRef.setInput(name, value); } getOutput(componentRef, name) { const output = componentRef.instance[name]; if (isObservable(output)) { return output; } if (this.isOutputSignal(output)) { return outputToObservable(output); } throw new Error(`Component ${name} is not an output!`); } isOutputSignal(value) { return value != null && typeof value['subscribe'] === 'function'; } } /** @nocollapse */ SignalComponentIO.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: SignalComponentIO, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); /** @nocollapse */ SignalComponentIO.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: SignalComponentIO }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: SignalComponentIO, decorators: [{ type: Injectable }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLWNvbXBvbmVudC1pby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWR5bmFtaWMtY29tcG9uZW50L3NpZ25hbC1jb21wb25lbnQtaW8vc3JjL2xpYi9zaWduYWwtY29tcG9uZW50LWlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELGFBQWE7QUFDYixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUVoRCxnQkFBZ0I7QUFFaEIsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixRQUFRLENBQ04sWUFBNkIsRUFDN0IsSUFBTyxFQUNQLEtBQVc7UUFFWCxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsU0FBUyxDQUNQLFlBQTZCLEVBQzdCLElBQU87UUFFUCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNDLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDL0IsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNuQztRQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxJQUFJLG9CQUFvQixDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFjO1FBQ25DLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxPQUFRLEtBQWEsQ0FBQyxXQUFXLENBQUMsS0FBSyxVQUFVLENBQUM7SUFDNUUsQ0FBQzs7aUlBNUJVLGlCQUFpQjtxSUFBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IG91dHB1dFRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IENvbXBvbmVudElPLCBDb21wb25lbnRJbnB1dEtleSB9IGZyb20gJ25nLWR5bmFtaWMtY29tcG9uZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUsIGlzT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKiogQGludGVybmFsICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2lnbmFsQ29tcG9uZW50SU8gaW1wbGVtZW50cyBDb21wb25lbnRJTyB7XG4gIHNldElucHV0PFQsIEsgZXh0ZW5kcyBDb21wb25lbnRJbnB1dEtleTxUPj4oXG4gICAgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4sXG4gICAgbmFtZTogSyxcbiAgICB2YWx1ZTogVFtLXSxcbiAgKTogdm9pZCB7XG4gICAgY29tcG9uZW50UmVmLnNldElucHV0KG5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIGdldE91dHB1dDxULCBLIGV4dGVuZHMgQ29tcG9uZW50SW5wdXRLZXk8VD4+KFxuICAgIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFQ+LFxuICAgIG5hbWU6IEssXG4gICk6IE9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgIGNvbnN0IG91dHB1dCA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZVtuYW1lXTtcblxuICAgIGlmIChpc09ic2VydmFibGUob3V0cHV0KSkge1xuICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc091dHB1dFNpZ25hbChvdXRwdXQpKSB7XG4gICAgICByZXR1cm4gb3V0cHV0VG9PYnNlcnZhYmxlKG91dHB1dCk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgJHtuYW1lfSBpcyBub3QgYW4gb3V0cHV0IWApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc091dHB1dFNpZ25hbCh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiAodmFsdWUgYXMgYW55KVsnc3Vic2NyaWJlJ10gPT09ICdmdW5jdGlvbic7XG4gIH1cbn1cbiJdfQ==