@ngneat/overview
Version:
The Template for Success in Template Management
45 lines • 6.04 kB
JavaScript
export class TplRef {
constructor(args) {
this.args = args;
if (this.args.vcr) {
this.ref = this.args.vcr.createEmbeddedView(this.args.tpl, this.args.context || {}, { injector: args.injector });
this.ref.detectChanges();
}
else {
this.ref = this.args.tpl.createEmbeddedView(this.args.context || {}, args.injector);
this.ref.detectChanges();
this.args.appRef.attachView(this.ref);
}
}
detectChanges() {
this.ref.detectChanges();
return this;
}
getElement() {
const rootNodes = this.ref.rootNodes;
if (rootNodes.length === 1 && rootNodes[0] === Node.ELEMENT_NODE) {
this.element = rootNodes[0];
}
else {
this.element = document.createElement('div');
this.element.append(...rootNodes);
}
return this.element;
}
destroy() {
if (this.ref.rootNodes[0] !== 1) {
this.element?.parentNode.removeChild(this.element);
this.element = null;
}
if (!this.args.vcr) {
this.args.appRef.detachView(this.ref);
}
this.ref.destroy();
this.ref = null;
}
updateContext(context) {
Object.assign(this.ref.context, context);
return this;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmduZWF0L292ZXJ2aWV3L3NyYy9saWIvdmlld3MvdGVtcGxhdGUtcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE1BQU0sT0FBTyxNQUFNO0lBSWpCLFlBQW9CLElBQWE7UUFBYixTQUFJLEdBQUosSUFBSSxDQUFTO1FBQy9CLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNqSCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSyxFQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNGLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXpCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFVBQVU7UUFDUixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUNyQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDakUsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBVTtRQUN0QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXpDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIEVtYmVkZGVkVmlld1JlZiwgSW5qZWN0b3IsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWaWV3UmVmIH0gZnJvbSAnLi90eXBlcyc7XG5cbmludGVyZmFjZSBBcmdzPEM+IHtcbiAgdHBsOiBUZW1wbGF0ZVJlZjxDPjtcbiAgY29udGV4dDogQztcbiAgdmNyOiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkO1xuICBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmIHwgdW5kZWZpbmVkO1xuICBpbmplY3RvcjogSW5qZWN0b3IgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBUcGxSZWY8Qz4gaW1wbGVtZW50cyBWaWV3UmVmIHtcbiAgcmVmOiBFbWJlZGRlZFZpZXdSZWY8e30+O1xuICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcmdzOiBBcmdzPEM+KSB7XG4gICAgaWYgKHRoaXMuYXJncy52Y3IpIHtcbiAgICAgIHRoaXMucmVmID0gdGhpcy5hcmdzLnZjci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5hcmdzLnRwbCwgdGhpcy5hcmdzLmNvbnRleHQgfHwge30sIHsgaW5qZWN0b3I6IGFyZ3MuaW5qZWN0b3IgfSk7XG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVmID0gdGhpcy5hcmdzLnRwbC5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5hcmdzLmNvbnRleHQgfHwgKHt9IGFzIEMpLCBhcmdzLmluamVjdG9yKTtcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMuYXJncy5hcHBSZWYuYXR0YWNoVmlldyh0aGlzLnJlZik7XG4gICAgfVxuICB9XG5cbiAgZGV0ZWN0Q2hhbmdlcygpIHtcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldEVsZW1lbnQoKTogRWxlbWVudCB7XG4gICAgY29uc3Qgcm9vdE5vZGVzID0gdGhpcy5yZWYucm9vdE5vZGVzO1xuICAgIGlmIChyb290Tm9kZXMubGVuZ3RoID09PSAxICYmIHJvb3ROb2Rlc1swXSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICAgIHRoaXMuZWxlbWVudCA9IHJvb3ROb2Rlc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kKC4uLnJvb3ROb2Rlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudDtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMucmVmLnJvb3ROb2Rlc1swXSAhPT0gMSkge1xuICAgICAgdGhpcy5lbGVtZW50Py5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVudCk7XG4gICAgICB0aGlzLmVsZW1lbnQgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hcmdzLnZjcikge1xuICAgICAgdGhpcy5hcmdzLmFwcFJlZi5kZXRhY2hWaWV3KHRoaXMucmVmKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlZi5kZXN0cm95KCk7XG4gICAgdGhpcy5yZWYgPSBudWxsO1xuICB9XG5cbiAgdXBkYXRlQ29udGV4dChjb250ZXh0OiBDKSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLnJlZi5jb250ZXh0LCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG4iXX0=