fix(render): recurse into components/embedded templates not until all elements in a view have been visited

Fixes #4551
Closes #4601
This commit is contained in:
Tobias Bosch
2015-10-07 17:15:12 -07:00
parent ff77230edb
commit 6d4bd5d901
11 changed files with 294 additions and 133 deletions

View File

@ -30,7 +30,7 @@ export class WebWorkerTextCmd implements RenderTextCmd {
}
export class WebWorkerNgContentCmd implements RenderNgContentCmd {
constructor(public ngContentIndex: number) {}
constructor(public index: number, public ngContentIndex: number) {}
visit(visitor: RenderCommandVisitor, context: any): any {
return visitor.visitNgContent(this, context);
}

View File

@ -163,7 +163,7 @@ class RenderTemplateCmdSerializer implements RenderCommandVisitor {
};
}
visitNgContent(cmd: RenderNgContentCmd, context: any): any {
return {'deserializerIndex': 1, 'ngContentIndex': cmd.ngContentIndex};
return {'deserializerIndex': 1, 'index': cmd.index, 'ngContentIndex': cmd.ngContentIndex};
}
visitBeginElement(cmd: RenderBeginElementCmd, context: any): any {
return {
@ -209,7 +209,7 @@ var RENDER_TEMPLATE_CMD_SERIALIZER = new RenderTemplateCmdSerializer();
var RENDER_TEMPLATE_CMD_DESERIALIZERS = [
(data: {[key: string]: any}) =>
new WebWorkerTextCmd(data['isBound'], data['ngContentIndex'], data['value']),
(data: {[key: string]: any}) => new WebWorkerNgContentCmd(data['ngContentIndex']),
(data: {[key: string]: any}) => new WebWorkerNgContentCmd(data['index'], data['ngContentIndex']),
(data: {[key: string]: any}) =>
new WebWorkerBeginElementCmd(data['isBound'], data['ngContentIndex'], data['name'],
data['attrNameAndValues'], data['eventTargetAndNames']),