@@ -51,8 +51,6 @@ import {
51
51
CompileTokenMetadata
52
52
} from '../compile_metadata' ;
53
53
54
- import { bindView } from './view_binder' ;
55
-
56
54
const IMPLICIT_TEMPLATE_VAR = '\$implicit' ;
57
55
const CLASS_ATTR = 'class' ;
58
56
const STYLE_ATTR = 'style' ;
@@ -66,28 +64,28 @@ export class ViewCompileDependency {
66
64
}
67
65
68
66
export function buildView ( view : CompileView , template : TemplateAst [ ] ,
69
- targetDependencies : ViewCompileDependency [ ] ,
70
- targetStatements : o . Statement [ ] ) : number {
71
- var builderVisitor = new ViewBuilderVisitor ( view , targetDependencies , targetStatements ) ;
67
+ targetDependencies : ViewCompileDependency [ ] ) : number {
68
+ var builderVisitor = new ViewBuilderVisitor ( view , targetDependencies ) ;
72
69
templateVisitAll ( builderVisitor , template , view . declarationElement . isNull ( ) ?
73
70
view . declarationElement :
74
71
view . declarationElement . parent ) ;
75
- // Need to separate binding from creation to be able to refer to
76
- // variables that have been declared after usage.
77
- bindView ( view , template ) ;
78
- view . afterNodes ( ) ;
79
-
80
- createViewTopLevelStmts ( view , targetStatements ) ;
81
-
82
72
return builderVisitor . nestedViewCount ;
83
73
}
84
74
75
+ export function finishView ( view : CompileView , targetStatements : o . Statement [ ] ) {
76
+ view . afterNodes ( ) ;
77
+ createViewTopLevelStmts ( view , targetStatements ) ;
78
+ view . nodes . forEach ( ( node ) => {
79
+ if ( node instanceof CompileElement && isPresent ( node . embeddedView ) ) {
80
+ finishView ( node . embeddedView , targetStatements ) ;
81
+ }
82
+ } ) ;
83
+ }
85
84
86
85
class ViewBuilderVisitor implements TemplateAstVisitor {
87
86
nestedViewCount : number = 0 ;
88
87
89
- constructor ( public view : CompileView , public targetDependencies : ViewCompileDependency [ ] ,
90
- public targetStatements : o . Statement [ ] ) { }
88
+ constructor ( public view : CompileView , public targetDependencies : ViewCompileDependency [ ] ) { }
91
89
92
90
private _isRootNode ( parent : CompileElement ) : boolean { return parent . view !== this . view ; }
93
91
@@ -287,8 +285,7 @@ class ViewBuilderVisitor implements TemplateAstVisitor {
287
285
var embeddedView = new CompileView (
288
286
this . view . component , this . view . genConfig , this . view . pipeMetas , o . NULL_EXPR ,
289
287
this . view . viewIndex + this . nestedViewCount , compileElement , templateVariableBindings ) ;
290
- this . nestedViewCount +=
291
- buildView ( embeddedView , ast . children , this . targetDependencies , this . targetStatements ) ;
288
+ this . nestedViewCount += buildView ( embeddedView , ast . children , this . targetDependencies ) ;
292
289
293
290
compileElement . beforeChildren ( ) ;
294
291
this . _addRootNodeAndProject ( compileElement , ast . ngContentIndex , parent ) ;
0 commit comments