@ngneat/overview
Version:
The Template for Success in Template Management
31 lines • 4.32 kB
JavaScript
import { Directive, ViewContainerRef, effect, inject, input } from '@angular/core';
import { TeleportService } from './teleport.service';
import * as i0 from "@angular/core";
export class TeleportOutletDirective {
constructor() {
// We could've also used the `ngAcceptInputType`, but it's being deprecated in newer Angular versions.
this.teleportOutlet = input();
this.vcr = inject(ViewContainerRef);
this.service = inject(TeleportService);
effect(() => {
const teleportOutlet = this.teleportOutlet();
if (typeof teleportOutlet === 'string') {
this.service.ports.set(teleportOutlet, this.vcr);
this.service.newOutlet(teleportOutlet);
}
});
}
ngOnDestroy() {
this.service.ports.delete(this.teleportOutlet());
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: TeleportOutletDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.4", type: TeleportOutletDirective, isStandalone: true, selector: "[teleportOutlet]", inputs: { teleportOutlet: { classPropertyName: "teleportOutlet", publicName: "teleportOutlet", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: TeleportOutletDirective, decorators: [{
type: Directive,
args: [{
selector: '[teleportOutlet]',
standalone: true,
}]
}], ctorParameters: () => [] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZXBvcnQtb3V0bGV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nbmVhdC9vdmVydmlldy9zcmMvbGliL3RlbGVwb3J0L3RlbGVwb3J0LW91dGxldC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBTXJELE1BQU0sT0FBTyx1QkFBdUI7SUFNbEM7UUFMQSxzR0FBc0c7UUFDN0YsbUJBQWMsR0FBRyxLQUFLLEVBQTZCLENBQUM7UUFDckQsUUFBRyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQy9CLFlBQU8sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFHeEMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM3QyxJQUFJLE9BQU8sY0FBYyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDbkQsQ0FBQzs4R0FsQlUsdUJBQXVCO2tHQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBSm5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkRlc3Ryb3ksIFZpZXdDb250YWluZXJSZWYsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGVsZXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi90ZWxlcG9ydC5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3RlbGVwb3J0T3V0bGV0XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRlbGVwb3J0T3V0bGV0RGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLy8gV2UgY291bGQndmUgYWxzbyB1c2VkIHRoZSBgbmdBY2NlcHRJbnB1dFR5cGVgLCBidXQgaXQncyBiZWluZyBkZXByZWNhdGVkIGluIG5ld2VyIEFuZ3VsYXIgdmVyc2lvbnMuXG4gIHJlYWRvbmx5IHRlbGVwb3J0T3V0bGV0ID0gaW5wdXQ8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4oKTtcbiAgcHJpdmF0ZSB2Y3IgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgc2VydmljZSA9IGluamVjdChUZWxlcG9ydFNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB0ZWxlcG9ydE91dGxldCA9IHRoaXMudGVsZXBvcnRPdXRsZXQoKTtcbiAgICAgIGlmICh0eXBlb2YgdGVsZXBvcnRPdXRsZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuc2VydmljZS5wb3J0cy5zZXQodGVsZXBvcnRPdXRsZXQsIHRoaXMudmNyKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLm5ld091dGxldCh0ZWxlcG9ydE91dGxldCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlcnZpY2UucG9ydHMuZGVsZXRlKHRoaXMudGVsZXBvcnRPdXRsZXQoKSk7XG4gIH1cbn1cbiJdfQ==