redoc/lib/shared/components/DynamicNg2Viewer/dynamic-ng2-viewer.component.ts
2016-12-02 12:11:17 +02:00

46 lines
1.1 KiB
TypeScript

'use strict';
import {
Component,
Input,
OnInit,
ViewContainerRef,
ComponentFactoryResolver,
Renderer
} from '@angular/core';
import {
ComponentParser,
ContentProjector
} from '../../../services/';
@Component({
selector: 'dynamic-ng2-viewer',
template: ''
})
export class DynamicNg2Viewer implements OnInit {
@Input() html: string;
constructor(
private view: ViewContainerRef,
private projector: ContentProjector,
private parser: ComponentParser,
private resolver: ComponentFactoryResolver,
private renderer: Renderer) {
}
ngOnInit() {
this.parser.setRenderer(this.renderer);
let nodesOrComponents = this.parser.splitIntoNodesOrComponents(this.html, this.view.injector);
let wrapperFactory = this.resolver.resolveComponentFactory(DynamicNg2Wrapper);
let ref = this.projector.instantiateAndProject(wrapperFactory, this.view, nodesOrComponents);
ref.changeDetectorRef.markForCheck();
}
}
@Component({
selector: 'dynamic-ng2-wrapper',
template: '<ng-content></ng-content>'
})
export class DynamicNg2Wrapper {}