fix(compiler): project using the right directive as component.
Closes #8344
This commit is contained in:
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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, '*')) {
|
||||
|
@ -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++) {
|
||||
|
@ -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;
|
||||
|
Reference in New Issue
Block a user