refactor(compiler): don’t use `AppElement`s for creating component views

This commit is contained in:
Tobias Bosch 2016-11-01 09:35:03 -07:00 committed by vikerman
parent 13533d2a30
commit d1035da85c
11 changed files with 79 additions and 66 deletions

View File

@ -73,7 +73,7 @@ export class CompileElement extends CompileNode {
this.instances.set(resolveIdentifierToken(Identifiers.Injector).reference, this.injector); this.instances.set(resolveIdentifierToken(Identifiers.Injector).reference, this.injector);
this.instances.set( this.instances.set(
resolveIdentifierToken(Identifiers.Renderer).reference, o.THIS_EXPR.prop('renderer')); resolveIdentifierToken(Identifiers.Renderer).reference, o.THIS_EXPR.prop('renderer'));
if (this.hasViewContainer || this.hasEmbeddedView || isPresent(this.component)) { if (this.hasViewContainer || this.hasEmbeddedView) {
this._createAppElement(); this._createAppElement();
} }
if (this.component) { if (this.component) {

View File

@ -40,7 +40,9 @@ export class ChangeDetectorStatusEnum {
export class ViewConstructorVars { export class ViewConstructorVars {
static viewUtils = o.variable('viewUtils'); static viewUtils = o.variable('viewUtils');
static parentInjector = o.variable('parentInjector'); static parentInjector = o.variable('parentInjector');
static declarationEl = o.variable('declarationEl'); static parentView = o.variable('parentView');
static parentIndex = o.variable('parentIndex');
static parentElement = o.variable('parentElement');
} }
export class ViewProperties { export class ViewProperties {

View File

@ -24,7 +24,7 @@ export function getPropertyInView(
var currView: CompileView = callingView; var currView: CompileView = callingView;
while (currView !== definedView && isPresent(currView.declarationElement.view)) { while (currView !== definedView && isPresent(currView.declarationElement.view)) {
currView = currView.declarationElement.view; currView = currView.declarationElement.view;
viewProp = viewProp.prop('parent'); viewProp = viewProp.prop('parentView');
} }
if (currView !== definedView) { if (currView !== definedView) {
throw new Error( throw new Error(

View File

@ -233,12 +233,12 @@ class ViewBuilderVisitor implements TemplateAstVisitor {
o.importType(resolveIdentifier(Identifiers.AppView), [o.importType(component.type)]))); o.importType(resolveIdentifier(Identifiers.AppView), [o.importType(component.type)])));
this.view.viewChildren.push(compViewExpr); this.view.viewChildren.push(compViewExpr);
compileElement.setComponentView(compViewExpr); compileElement.setComponentView(compViewExpr);
this.view.createMethod.addStmt( this.view.createMethod.addStmt(compViewExpr
compViewExpr .set(o.importExpr(nestedComponentIdentifier).callFn([
.set(o.importExpr(nestedComponentIdentifier).callFn([ ViewProperties.viewUtils, compileElement.injector,
ViewProperties.viewUtils, compileElement.injector, compileElement.appElement o.THIS_EXPR, o.literal(nodeIndex), renderNode
])) ]))
.toStmt()); .toStmt());
} }
compileElement.beforeChildren(); compileElement.beforeChildren();
this._addRootNodeAndProject(compileElement); this._addRootNodeAndProject(compileElement);
@ -442,13 +442,16 @@ function createViewClass(
ViewConstructorVars.parentInjector.name, ViewConstructorVars.parentInjector.name,
o.importType(resolveIdentifier(Identifiers.Injector))), o.importType(resolveIdentifier(Identifiers.Injector))),
new o.FnParam( new o.FnParam(
ViewConstructorVars.declarationEl.name, ViewConstructorVars.parentView.name,
o.importType(resolveIdentifier(Identifiers.AppElement))) o.importType(resolveIdentifier(Identifiers.AppView), [o.DYNAMIC_TYPE])),
new o.FnParam(ViewConstructorVars.parentIndex.name, o.NUMBER_TYPE),
new o.FnParam(ViewConstructorVars.parentElement.name, o.DYNAMIC_TYPE)
]; ];
var superConstructorArgs = [ var superConstructorArgs = [
o.variable(view.className), renderCompTypeVar, ViewTypeEnum.fromValue(view.viewType), o.variable(view.className), renderCompTypeVar, ViewTypeEnum.fromValue(view.viewType),
ViewConstructorVars.viewUtils, ViewConstructorVars.parentInjector, ViewConstructorVars.viewUtils, ViewConstructorVars.parentInjector,
ViewConstructorVars.declarationEl, ViewConstructorVars.parentView, ViewConstructorVars.parentIndex,
ViewConstructorVars.parentElement,
ChangeDetectorStatusEnum.fromValue(getChangeDetectionMode(view)) ChangeDetectorStatusEnum.fromValue(getChangeDetectionMode(view))
]; ];
if (view.genConfig.genDebugInfo) { if (view.genConfig.genDebugInfo) {
@ -507,8 +510,10 @@ function createViewFactory(
ViewConstructorVars.parentInjector.name, ViewConstructorVars.parentInjector.name,
o.importType(resolveIdentifier(Identifiers.Injector))), o.importType(resolveIdentifier(Identifiers.Injector))),
new o.FnParam( new o.FnParam(
ViewConstructorVars.declarationEl.name, ViewConstructorVars.parentView.name,
o.importType(resolveIdentifier(Identifiers.AppElement))) o.importType(resolveIdentifier(Identifiers.AppView), [o.DYNAMIC_TYPE])),
new o.FnParam(ViewConstructorVars.parentIndex.name, o.NUMBER_TYPE),
new o.FnParam(ViewConstructorVars.parentElement.name, o.DYNAMIC_TYPE)
]; ];
var initRenderCompTypeStmts: any[] = []; var initRenderCompTypeStmts: any[] = [];
var templateUrlInfo: string; var templateUrlInfo: string;
@ -553,8 +558,8 @@ function generateCreateMethod(view: CompileView): o.Statement[] {
var parentRenderNodeExpr: o.Expression = o.NULL_EXPR; var parentRenderNodeExpr: o.Expression = o.NULL_EXPR;
var parentRenderNodeStmts: any[] = []; var parentRenderNodeStmts: any[] = [];
if (view.viewType === ViewType.COMPONENT) { if (view.viewType === ViewType.COMPONENT) {
parentRenderNodeExpr = ViewProperties.renderer.callMethod( parentRenderNodeExpr =
'createViewRoot', [o.THIS_EXPR.prop('declarationAppElement').prop('nativeElement')]); ViewProperties.renderer.callMethod('createViewRoot', [o.THIS_EXPR.prop('parentElement')]);
parentRenderNodeStmts = parentRenderNodeStmts =
[parentRenderNodeVar.set(parentRenderNodeExpr) [parentRenderNodeVar.set(parentRenderNodeExpr)
.toDeclStmt( .toDeclStmt(

View File

@ -24,7 +24,7 @@ export function main() {
const definedView = createCompileView({className: 'parentView'}); const definedView = createCompileView({className: 'parentView'});
const callingView = createCompileView({className: 'childView', parent: definedView}); const callingView = createCompileView({className: 'childView', parent: definedView});
expect(getPropertyInView(expr, callingView, definedView)) expect(getPropertyInView(expr, callingView, definedView))
.toEqual(o.THIS_EXPR.prop('parent').prop('someProp')); .toEqual(o.THIS_EXPR.prop('parentView').prop('someProp'));
}); });
it('should access a known property in a parent view with cast', () => { it('should access a known property in a parent view with cast', () => {
@ -32,7 +32,7 @@ export function main() {
const definedView = createCompileView({className: 'parentView', fields: ['someProp']}); const definedView = createCompileView({className: 'parentView', fields: ['someProp']});
const callingView = createCompileView({className: 'childView', parent: definedView}); const callingView = createCompileView({className: 'childView', parent: definedView});
expect(getPropertyInView(expr, callingView, definedView)) expect(getPropertyInView(expr, callingView, definedView))
.toEqual(o.THIS_EXPR.prop('parent').cast(definedView.classType).prop('someProp')); .toEqual(o.THIS_EXPR.prop('parentView').cast(definedView.classType).prop('someProp'));
}); });
it('should access a known property in a parent view with cast also for property chain expressions', it('should access a known property in a parent view with cast also for property chain expressions',
@ -41,7 +41,7 @@ export function main() {
const definedView = createCompileView({className: 'parentView', fields: ['someProp']}); const definedView = createCompileView({className: 'parentView', fields: ['someProp']});
const callingView = createCompileView({className: 'childView', parent: definedView}); const callingView = createCompileView({className: 'childView', parent: definedView});
expect(getPropertyInView(expr, callingView, definedView)) expect(getPropertyInView(expr, callingView, definedView))
.toEqual(o.THIS_EXPR.prop('parent') .toEqual(o.THIS_EXPR.prop('parentView')
.cast(definedView.classType) .cast(definedView.classType)
.prop('someProp') .prop('someProp')
.prop('context')); .prop('context'));

View File

@ -109,8 +109,7 @@ export class ComponentFactory<C> {
if (!projectableNodes) { if (!projectableNodes) {
projectableNodes = []; projectableNodes = [];
} }
// Note: Host views don't need a declarationAppElement! var hostView: AppView<any> = this._viewFactory(vu, injector, null, null, null);
var hostView: AppView<any> = this._viewFactory(vu, injector, null);
// TODO: implement this in the View class directly?! // TODO: implement this in the View class directly?!
// (behind a `if (this.type === ViewType.HOST)`) // (behind a `if (this.type === ViewType.HOST)`)
// TODO: and pass the projectableNodes into `createHostView` // TODO: and pass the projectableNodes into `createHostView`

View File

@ -39,13 +39,10 @@ export class DebugContext implements RenderDebugInfo {
} }
get componentRenderElement() { get componentRenderElement() {
var componentView = this._view; var componentView = this._view;
while (isPresent(componentView.declarationAppElement) && while (isPresent(componentView.parentView) && componentView.type !== ViewType.COMPONENT) {
componentView.type !== ViewType.COMPONENT) { componentView = <DebugAppView<any>>componentView.parentView;
componentView = <DebugAppView<any>>componentView.declarationAppElement.parentView;
} }
return isPresent(componentView.declarationAppElement) ? return componentView.parentElement;
componentView.declarationAppElement.nativeElement :
null;
} }
get injector(): Injector { return this._view.injector(this._nodeIndex); } get injector(): Injector { return this._view.injector(this._nodeIndex); }
get renderNode(): any { get renderNode(): any {

View File

@ -47,7 +47,8 @@ export class TemplateRef_<C> extends TemplateRef<C> {
createEmbeddedView(context: C): EmbeddedViewRef<C> { createEmbeddedView(context: C): EmbeddedViewRef<C> {
var view: AppView<C> = this._viewFactory( var view: AppView<C> = this._viewFactory(
this._appElement.parentView.viewUtils, this._appElement.parentInjector, this._appElement); this._appElement.parentView.viewUtils, this._appElement.parentInjector,
this._appElement.parentView, this._appElement.index, this._appElement.nativeElement);
view.create(context || <any>{}); view.create(context || <any>{});
return view.ref; return view.ref;
} }

View File

@ -52,13 +52,13 @@ export abstract class AppView<T> {
constructor( constructor(
public clazz: any, public componentType: RenderComponentType, public type: ViewType, public clazz: any, public componentType: RenderComponentType, public type: ViewType,
public viewUtils: ViewUtils, public parentInjector: Injector, public viewUtils: ViewUtils, public parentInjector: Injector, public parentView: AppView<any>,
public declarationAppElement: AppElement, public cdMode: ChangeDetectorStatus) { public parentIndex: number, public parentElement: any, public cdMode: ChangeDetectorStatus) {
this.ref = new ViewRef_(this); this.ref = new ViewRef_(this);
if (type === ViewType.COMPONENT || type === ViewType.HOST) { if (type === ViewType.COMPONENT || type === ViewType.HOST) {
this.renderer = viewUtils.renderComponent(componentType); this.renderer = viewUtils.renderComponent(componentType);
} else { } else {
this.renderer = declarationAppElement.parentView.renderer; this.renderer = parentView.renderer;
} }
} }
@ -129,8 +129,7 @@ export abstract class AppView<T> {
if (this.cdMode === ChangeDetectorStatus.Destroyed) { if (this.cdMode === ChangeDetectorStatus.Destroyed) {
return; return;
} }
var hostElement = var hostElement = this.type === ViewType.COMPONENT ? this.parentElement : null;
this.type === ViewType.COMPONENT ? this.declarationAppElement.nativeElement : null;
if (this.disposables) { if (this.disposables) {
for (var i = 0; i < this.disposables.length; i++) { for (var i = 0; i < this.disposables.length; i++) {
this.disposables[i](); this.disposables[i]();
@ -171,10 +170,6 @@ export abstract class AppView<T> {
get changeDetectorRef(): ChangeDetectorRef { return this.ref; } get changeDetectorRef(): ChangeDetectorRef { return this.ref; }
get parent(): AppView<any> {
return isPresent(this.declarationAppElement) ? this.declarationAppElement.parentView : null;
}
get flatRootNodes(): any[] { get flatRootNodes(): any[] {
const nodes: any[] = []; const nodes: any[] = [];
this.visitRootNodesInternal(addToArray, nodes); this.visitRootNodesInternal(addToArray, nodes);
@ -188,13 +183,12 @@ export abstract class AppView<T> {
} }
visitProjectedNodes<C>(ngContentIndex: number, cb: (node: any, ctx: C) => void, c: C): void { visitProjectedNodes<C>(ngContentIndex: number, cb: (node: any, ctx: C) => void, c: C): void {
const appEl = this.declarationAppElement;
switch (this.type) { switch (this.type) {
case ViewType.EMBEDDED: case ViewType.EMBEDDED:
appEl.parentView.visitProjectedNodes(ngContentIndex, cb, c); this.parentView.visitProjectedNodes(ngContentIndex, cb, c);
break; break;
case ViewType.COMPONENT: case ViewType.COMPONENT:
appEl.parentView.visitProjectableNodesInternal(appEl.index, ngContentIndex, cb, c); this.parentView.visitProjectableNodesInternal(this.parentIndex, ngContentIndex, cb, c);
break; break;
} }
} }
@ -256,9 +250,11 @@ export abstract class AppView<T> {
if (c.cdMode === ChangeDetectorStatus.Checked) { if (c.cdMode === ChangeDetectorStatus.Checked) {
c.cdMode = ChangeDetectorStatus.CheckOnce; c.cdMode = ChangeDetectorStatus.CheckOnce;
} }
let parentEl = if (c.type === ViewType.COMPONENT) {
c.type === ViewType.COMPONENT ? c.declarationAppElement : c.viewContainerElement; c = c.parentView;
c = isPresent(parentEl) ? parentEl.parentView : null; } else {
c = c.viewContainerElement ? c.viewContainerElement.parentView : null;
}
} }
} }
@ -274,9 +270,11 @@ export class DebugAppView<T> extends AppView<T> {
constructor( constructor(
clazz: any, componentType: RenderComponentType, type: ViewType, viewUtils: ViewUtils, clazz: any, componentType: RenderComponentType, type: ViewType, viewUtils: ViewUtils,
parentInjector: Injector, declarationAppElement: AppElement, cdMode: ChangeDetectorStatus, parentInjector: Injector, parentView: AppView<any>, parentIndex: number, parentNode: any,
public staticNodeDebugInfos: StaticNodeDebugInfo[]) { cdMode: ChangeDetectorStatus, public staticNodeDebugInfos: StaticNodeDebugInfo[]) {
super(clazz, componentType, type, viewUtils, parentInjector, declarationAppElement, cdMode); super(
clazz, componentType, type, viewUtils, parentInjector, parentView, parentIndex, parentNode,
cdMode);
} }
create(context: T) { create(context: T) {

View File

@ -27,10 +27,11 @@ class _View_TreeComponent_Host0 extends import1.AppView<any> {
_TreeComponent_0_4: _View_TreeComponent0; _TreeComponent_0_4: _View_TreeComponent0;
constructor( constructor(
viewUtils: import4.ViewUtils, parentInjector: import5.Injector, viewUtils: import4.ViewUtils, parentInjector: import5.Injector,
declarationEl: import2.AppElement) { parentView: import1.AppView<any>, parentIndex: number, parentElement: any) {
super( super(
_View_TreeComponent_Host0, renderType_TreeComponent_Host, import6.ViewType.HOST, viewUtils, _View_TreeComponent_Host0, renderType_TreeComponent_Host, import6.ViewType.HOST, viewUtils,
parentInjector, declarationEl, import7.ChangeDetectorStatus.CheckAlways); parentInjector, parentView, parentIndex, parentElement,
import7.ChangeDetectorStatus.CheckAlways);
} }
createInternal(rootSelector: string): import9.ComponentRef<any> { createInternal(rootSelector: string): import9.ComponentRef<any> {
this._el_0 = import4.selectOrCreateRenderHostElement( this._el_0 = import4.selectOrCreateRenderHostElement(
@ -53,12 +54,14 @@ class _View_TreeComponent_Host0 extends import1.AppView<any> {
} }
function viewFactory_TreeComponent_Host0( function viewFactory_TreeComponent_Host0(
viewUtils: import4.ViewUtils, parentInjector: import5.Injector, viewUtils: import4.ViewUtils, parentInjector: import5.Injector,
declarationEl: import2.AppElement): import1.AppView<any> { parentView: import1.AppView<any>, parentIndex: number,
parentElement: any): import1.AppView<any> {
if ((renderType_TreeComponent_Host === (null as any))) { if ((renderType_TreeComponent_Host === (null as any))) {
(renderType_TreeComponent_Host = (renderType_TreeComponent_Host =
viewUtils.createRenderComponentType('', 0, import8.ViewEncapsulation.None, [], {})); viewUtils.createRenderComponentType('', 0, import8.ViewEncapsulation.None, [], {}));
} }
return new _View_TreeComponent_Host0(viewUtils, parentInjector, declarationEl); return new _View_TreeComponent_Host0(
viewUtils, parentInjector, parentView, parentIndex, parentElement);
} }
export const TreeComponentNgFactory: import9.ComponentFactory<import3.TreeComponent> = export const TreeComponentNgFactory: import9.ComponentFactory<import3.TreeComponent> =
new import9.ComponentFactory<import3.TreeComponent>( new import9.ComponentFactory<import3.TreeComponent>(

View File

@ -30,17 +30,18 @@ class _View_TreeRootComponent_Host0 extends import1.AppView<any> {
_TreeRootComponent_0_4_View: any; _TreeRootComponent_0_4_View: any;
constructor( constructor(
viewUtils: import4.ViewUtils, parentInjector: import5.Injector, viewUtils: import4.ViewUtils, parentInjector: import5.Injector,
declarationEl: import2.AppElement) { parentView: import1.AppView<any>, parentIndex: number, parentElement: any) {
super( super(
_View_TreeRootComponent_Host0, renderType_TreeRootComponent_Host, import6.ViewType.HOST, _View_TreeRootComponent_Host0, renderType_TreeRootComponent_Host, import6.ViewType.HOST,
viewUtils, parentInjector, declarationEl, import7.ChangeDetectorStatus.CheckAlways); viewUtils, parentInjector, parentView, parentIndex, parentElement,
import7.ChangeDetectorStatus.CheckAlways);
} }
createInternal(rootSelector: string): import9.ComponentRef<any> { createInternal(rootSelector: string): import9.ComponentRef<any> {
this._el_0 = import4.selectOrCreateRenderHostElement( this._el_0 = import4.selectOrCreateRenderHostElement(
this.renderer, 'tree', import4.EMPTY_INLINE_ARRAY, rootSelector, (null as any)); this.renderer, 'tree', import4.EMPTY_INLINE_ARRAY, rootSelector, (null as any));
this._appEl_0 = new import2.AppElement(0, (null as any), this, this._el_0); this._appEl_0 = new import2.AppElement(0, (null as any), this, this._el_0);
this._TreeRootComponent_0_4_View = this._TreeRootComponent_0_4_View =
viewFactory_TreeRootComponent0(this.viewUtils, this.injector(0), this._appEl_0); viewFactory_TreeRootComponent0(this.viewUtils, this.injector(0), this, 0, this._el_0);
this._TreeRootComponent_0_4 = new import3.TreeRootComponent(); this._TreeRootComponent_0_4 = new import3.TreeRootComponent();
this._TreeRootComponent_0_4_View.create(this._TreeRootComponent_0_4, (null as any)); this._TreeRootComponent_0_4_View.create(this._TreeRootComponent_0_4, (null as any));
this.init([].concat([this._el_0]), [this._el_0], []); this.init([].concat([this._el_0]), [this._el_0], []);
@ -59,12 +60,14 @@ class _View_TreeRootComponent_Host0 extends import1.AppView<any> {
} }
function viewFactory_TreeRootComponent_Host0( function viewFactory_TreeRootComponent_Host0(
viewUtils: import4.ViewUtils, parentInjector: import5.Injector, viewUtils: import4.ViewUtils, parentInjector: import5.Injector,
declarationEl: import2.AppElement): import1.AppView<any> { parentView: import1.AppView<any>, parentIndex: number,
parentElement: any): import1.AppView<any> {
if ((renderType_TreeRootComponent_Host === (null as any))) { if ((renderType_TreeRootComponent_Host === (null as any))) {
(renderType_TreeRootComponent_Host = (renderType_TreeRootComponent_Host =
viewUtils.createRenderComponentType('', 0, import8.ViewEncapsulation.None, [], {})); viewUtils.createRenderComponentType('', 0, import8.ViewEncapsulation.None, [], {}));
} }
return new _View_TreeRootComponent_Host0(viewUtils, parentInjector, declarationEl); return new _View_TreeRootComponent_Host0(
viewUtils, parentInjector, parentView, parentIndex, parentElement);
} }
export const TreeRootComponentNgFactory: import9.ComponentFactory<import3.TreeRootComponent> = export const TreeRootComponentNgFactory: import9.ComponentFactory<import3.TreeRootComponent> =
new import9.ComponentFactory<import3.TreeRootComponent>( new import9.ComponentFactory<import3.TreeRootComponent>(
@ -79,14 +82,14 @@ class _View_TreeRootComponent0 extends import1.AppView<import3.TreeRootComponent
/*private*/ _expr_0: any; /*private*/ _expr_0: any;
constructor( constructor(
viewUtils: import4.ViewUtils, parentInjector: import5.Injector, viewUtils: import4.ViewUtils, parentInjector: import5.Injector,
declarationEl: import2.AppElement) { parentView: import1.AppView<any>, parentIndex: number, parentElement: any) {
super( super(
_View_TreeRootComponent0, renderType_TreeRootComponent, import6.ViewType.COMPONENT, _View_TreeRootComponent0, renderType_TreeRootComponent, import6.ViewType.COMPONENT,
viewUtils, parentInjector, declarationEl, import7.ChangeDetectorStatus.CheckAlways); viewUtils, parentInjector, parentView, parentIndex, parentElement,
import7.ChangeDetectorStatus.CheckAlways);
} }
createInternal(rootSelector: string): import9.ComponentRef<any> { createInternal(rootSelector: string): import9.ComponentRef<any> {
const parentRenderNode: any = const parentRenderNode: any = this.renderer.createViewRoot(this.parentElement);
this.renderer.createViewRoot(this.declarationAppElement.nativeElement);
this._anchor_0 = this.renderer.createTemplateAnchor(parentRenderNode, (null as any)); this._anchor_0 = this.renderer.createTemplateAnchor(parentRenderNode, (null as any));
this._appEl_0 = new import2.AppElement(0, (null as any), this, this._anchor_0); this._appEl_0 = new import2.AppElement(0, (null as any), this, this._anchor_0);
this._TemplateRef_0_5 = this._TemplateRef_0_5 =
@ -116,23 +119,26 @@ class _View_TreeRootComponent0 extends import1.AppView<import3.TreeRootComponent
} }
export function viewFactory_TreeRootComponent0( export function viewFactory_TreeRootComponent0(
viewUtils: import4.ViewUtils, parentInjector: import5.Injector, viewUtils: import4.ViewUtils, parentInjector: import5.Injector,
declarationEl: import2.AppElement): import1.AppView<import3.TreeRootComponent> { parentView: import1.AppView<any>, parentIndex: number,
parentElement: any): import1.AppView<import3.TreeRootComponent> {
if ((renderType_TreeRootComponent === (null as any))) { if ((renderType_TreeRootComponent === (null as any))) {
(renderType_TreeRootComponent = viewUtils.createRenderComponentType( (renderType_TreeRootComponent = viewUtils.createRenderComponentType(
'/Users/tbosch/projects/conf-demos/ngc-demo/src/ng2_static/root_tree.ts class TreeRootComponent - inline template', '/Users/tbosch/projects/conf-demos/ngc-demo/src/ng2_static/root_tree.ts class TreeRootComponent - inline template',
0, import8.ViewEncapsulation.None, styles_TreeRootComponent, {})); 0, import8.ViewEncapsulation.None, styles_TreeRootComponent, {}));
} }
return new _View_TreeRootComponent0(viewUtils, parentInjector, declarationEl); return new _View_TreeRootComponent0(
viewUtils, parentInjector, parentView, parentIndex, parentElement);
} }
class _View_TreeRootComponent1 extends import1.AppView<any> { class _View_TreeRootComponent1 extends import1.AppView<any> {
_el_0: any; _el_0: any;
_TreeComponent0_0_4View: any; _TreeComponent0_0_4View: any;
constructor( constructor(
viewUtils: import4.ViewUtils, parentInjector: import5.Injector, viewUtils: import4.ViewUtils, parentInjector: import5.Injector,
declarationEl: import2.AppElement) { parentView: import1.AppView<any>, parentIndex: number, parentElement: any) {
super( super(
_View_TreeRootComponent1, renderType_TreeRootComponent, import6.ViewType.EMBEDDED, _View_TreeRootComponent1, renderType_TreeRootComponent, import6.ViewType.EMBEDDED,
viewUtils, parentInjector, declarationEl, import7.ChangeDetectorStatus.CheckAlways); viewUtils, parentInjector, parentView, parentIndex, parentElement,
import7.ChangeDetectorStatus.CheckAlways);
} }
createInternal(rootSelector: string): import9.ComponentRef<any> { createInternal(rootSelector: string): import9.ComponentRef<any> {
this._el_0 = this.renderer.createElement((null as any), 'tree0', (null as any)); this._el_0 = this.renderer.createElement((null as any), 'tree0', (null as any));
@ -142,13 +148,15 @@ class _View_TreeRootComponent1 extends import1.AppView<any> {
} }
destroyInternal() { this._TreeComponent0_0_4View.destroyInternal(); } destroyInternal() { this._TreeComponent0_0_4View.destroyInternal(); }
detectChangesInternal(throwOnChange: boolean): void { detectChangesInternal(throwOnChange: boolean): void {
this._TreeComponent0_0_4View.updateData(this.parent.context.data); this._TreeComponent0_0_4View.updateData(this.parentView.context.data);
this._TreeComponent0_0_4View.detectChangesInternal(throwOnChange); this._TreeComponent0_0_4View.detectChangesInternal(throwOnChange);
} }
visitRootNodesInternal(cb: any, context: any) { cb(this._el_0, context); } visitRootNodesInternal(cb: any, context: any) { cb(this._el_0, context); }
} }
function viewFactory_TreeRootComponent1( function viewFactory_TreeRootComponent1(
viewUtils: import4.ViewUtils, parentInjector: import5.Injector, viewUtils: import4.ViewUtils, parentInjector: import5.Injector,
declarationEl: import2.AppElement): import1.AppView<any> { parentView: import1.AppView<any>, parentIndex: number,
return new _View_TreeRootComponent1(viewUtils, parentInjector, declarationEl); parentElement: any): import1.AppView<any> {
return new _View_TreeRootComponent1(
viewUtils, parentInjector, parentView, parentIndex, parentElement);
} }