fix(compiler): project using the right directive as component.

Closes #8344
This commit is contained in:
Tobias Bosch
2016-04-29 17:07:28 -07:00
parent 351f24e8eb
commit 0f774df811
7 changed files with 41 additions and 19 deletions

View File

@ -116,19 +116,6 @@ export class ElementAst implements TemplateAst {
visit(visitor: TemplateAstVisitor, context: any): any {
return visitor.visitElement(this, context);
}
/**
* Get the component associated with this element, if any.
*/
getComponent(): CompileDirectiveMetadata {
for (var i = 0; i < this.directives.length; i++) {
var dirAst = this.directives[i];
if (dirAst.directive.isComponent) {
return dirAst.directive;
}
}
return null;
}
}
/**

View File

@ -847,8 +847,9 @@ class ElementContext {
providerContext: ProviderElementContext): ElementContext {
var matcher = new SelectorMatcher();
var wildcardNgContentIndex = null;
if (directives.length > 0 && directives[0].directive.isComponent) {
var ngContentSelectors = directives[0].directive.template.ngContentSelectors;
var component = directives.find(directive => directive.directive.isComponent);
if (isPresent(component)) {
var ngContentSelectors = component.directive.template.ngContentSelectors;
for (var i = 0; i < ngContentSelectors.length; i++) {
var selector = ngContentSelectors[i];
if (StringWrapper.equals(selector, '*')) {

View File

@ -200,8 +200,8 @@ class ViewBuilderVisitor implements TemplateAstVisitor {
var renderNode = o.THIS_EXPR.prop(fieldName);
var component = ast.getComponent();
var directives = ast.directives.map(directiveAst => directiveAst.directive);
var component = directives.find(directive => directive.isComponent);
var htmlAttrs = _readHtmlAttrs(ast.attrs);
var attrNameAndValues = _mergeHtmlAndDirectiveAttrs(htmlAttrs, directives);
for (var i = 0; i < attrNameAndValues.length; i++) {

View File

@ -156,8 +156,8 @@ export function castByValue<T>(input: any, value: T): T {
return <T>input;
}
export const EMPTY_ARRAY = CONST_EXPR([]);
export const EMPTY_MAP = CONST_EXPR({});
export const EMPTY_ARRAY = /*@ts2dart_const*/[];
export const EMPTY_MAP = /*@ts2dart_const*/ {};
export function pureProxy1<P0, R>(fn: (p0: P0) => R): (p0: P0) => R {
var result: R;