UNPKG

nativescript-angular

Version:

An Angular renderer that lets you build mobile apps with NativeScript.

52 lines 2.42 kB
Object.defineProperty(exports, "__esModule", { value: true }); var core_1 = require("@angular/core"); var trace_1 = require("tns-core-modules/trace"); exports.CATEGORY = "detached-loader"; function log(message) { trace_1.write(message, exports.CATEGORY); } /** * Wrapper component used for loading components when navigating * It uses DetachedContainer as selector so that it is containerRef is not attached to * the visual tree. */ var DetachedLoader = /** @class */ (function () { function DetachedLoader(resolver, changeDetector, containerRef) { this.resolver = resolver; this.changeDetector = changeDetector; this.containerRef = containerRef; } DetachedLoader.prototype.loadInLocation = function (componentType) { var factory = this.resolver.resolveComponentFactory(componentType); var componentRef = this.containerRef.createComponent(factory, this.containerRef.length, this.containerRef.parentInjector); // Component is created, built may not be checked if we are loading // inside component with OnPush CD strategy. Mark us for check to be sure CD will reach us. // We are inside a promise here so no need for setTimeout - CD should trigger // after the promise. log("DetachedLoader.loadInLocation component loaded -> markForCheck"); return Promise.resolve(componentRef); }; DetachedLoader.prototype.detectChanges = function () { this.changeDetector.markForCheck(); }; // TODO: change this API -- async promises not needed here anymore. DetachedLoader.prototype.loadComponent = function (componentType) { log("DetachedLoader.loadComponent"); return this.loadInLocation(componentType); }; DetachedLoader.prototype.loadWithFactory = function (factory) { return this.containerRef.createComponent(factory, this.containerRef.length, this.containerRef.parentInjector, null); }; DetachedLoader = __decorate([ core_1.Component({ selector: "DetachedContainer", template: "<Placeholder #loader></Placeholder>" }), __metadata("design:paramtypes", [core_1.ComponentFactoryResolver, core_1.ChangeDetectorRef, core_1.ViewContainerRef]) ], DetachedLoader); return DetachedLoader; }()); exports.DetachedLoader = DetachedLoader; //# sourceMappingURL=detached-loader.js.map