UNPKG

ngx-cache-if

Version:

Angular *ngIf directive that cache content. *ngxCacheIf directive render content when needed and cache it for reuse.

81 lines (80 loc) 6.07 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Directive, Input, TemplateRef, ViewContainerRef, ElementRef, Renderer2, ComponentFactoryResolver } from '@angular/core'; export class NgxCacheIfDirective { /** * @param {?} templateRef * @param {?} viewContainer * @param {?} el * @param {?} renderer * @param {?} cfr */ constructor(templateRef, viewContainer, el, renderer, cfr) { this.templateRef = templateRef; this.viewContainer = viewContainer; this.el = el; this.renderer = renderer; this.cfr = cfr; this.loaded = {}; } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { if (!this.loaded[this.templateRef.elementRef.nativeElement.nodeName]) { if (changes["ngxCacheIf"].currentValue) { this.viewContainer.clear(); this.loaded[this.templateRef.elementRef.nativeElement.nodeName] = this.viewContainer.createEmbeddedView(this.templateRef); } } else { try { if (changes["ngxCacheIf"].currentValue) { this.viewContainer.insert(this.loaded[this.templateRef.elementRef.nativeElement.nodeName]); } else { this.viewContainer.detach(); } } catch (e) { console.log(e); } } } } NgxCacheIfDirective.decorators = [ { type: Directive, args: [{ selector: '[ngxCacheIf]' },] }, ]; /** @nocollapse */ NgxCacheIfDirective.ctorParameters = () => [ { type: TemplateRef }, { type: ViewContainerRef }, { type: ElementRef }, { type: Renderer2 }, { type: ComponentFactoryResolver } ]; NgxCacheIfDirective.propDecorators = { ngxCacheIf: [{ type: Input }] }; if (false) { /** @type {?} */ NgxCacheIfDirective.prototype.ngxCacheIf; /** @type {?} */ NgxCacheIfDirective.prototype.loaded; /** @type {?} */ NgxCacheIfDirective.prototype.templateRef; /** @type {?} */ NgxCacheIfDirective.prototype.viewContainer; /** @type {?} */ NgxCacheIfDirective.prototype.el; /** @type {?} */ NgxCacheIfDirective.prototype.renderer; /** @type {?} */ NgxCacheIfDirective.prototype.cfr; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWNhY2hlLWlmLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1jYWNoZS1pZi8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtY2FjaGUtaWYuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixTQUFTLEVBQ1Qsd0JBQXdCLEVBRXpCLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE1BQU07Ozs7Ozs7O0lBS0osWUFBb0IsV0FBNkIsRUFBVSxhQUErQixFQUN0RSxJQUF3QixRQUFtQixFQUMzQztRQUZBLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUN0RSxPQUFFLEdBQUYsRUFBRTtRQUFzQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQzNDLFFBQUcsR0FBSCxHQUFHO3NCQUp5QixFQUFFO0tBS2pEOzs7OztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRSxFQUFFLENBQUMsQ0FBQyxPQUFPLGVBQVksWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDekg7U0FDSjtRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sSUFBSSxDQUFDO2dCQUNILEVBQUUsQ0FBQyxDQUFDLE9BQU8sZUFBWSxZQUFZLENBQUMsQ0FBQyxDQUFDO29CQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2lCQUM1RjtnQkFBQyxJQUFJLENBQUMsQ0FBQztvQkFDTixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO2lCQUM3QjthQUNGO1lBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQjtTQUNGO0tBQ0Y7OztZQTlCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGNBQWM7YUFDekI7Ozs7WUFWQyxXQUFXO1lBQ1gsZ0JBQWdCO1lBQ2hCLFVBQVU7WUFDVixTQUFTO1lBQ1Qsd0JBQXdCOzs7eUJBU3ZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBFbGVtZW50UmVmLFxuICBSZW5kZXJlcjIsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmd4Q2FjaGVJZl0nXG59KVxuZXhwb3J0IGNsYXNzIE5neENhY2hlSWZEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpIG5neENhY2hlSWY6IGFueTtcbiAgbG9hZGVkOiB7W2tleTogc3RyaW5nXTogRW1iZWRkZWRWaWV3UmVmPGFueT59ID0ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PiwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgIHByaXZhdGUgY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoIXRoaXMubG9hZGVkW3RoaXMudGVtcGxhdGVSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lXSkge1xuICAgICAgaWYgKGNoYW5nZXMubmd4Q2FjaGVJZi5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgICAgIHRoaXMubG9hZGVkW3RoaXMudGVtcGxhdGVSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lXSA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGNoYW5nZXMubmd4Q2FjaGVJZi5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuaW5zZXJ0KHRoaXMubG9hZGVkW3RoaXMudGVtcGxhdGVSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmRldGFjaCgpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19