fix(transformers): support query.read

Closes #8172
This commit is contained in:
Tobias Bosch
2016-04-21 08:05:08 -07:00
parent 2f7045720a
commit 386cc5dbb6
6 changed files with 36 additions and 11 deletions

View File

@ -1010,16 +1010,24 @@ List<CompileDiDependencyMetadata> _readDeps(ListLiteral deps) {
_createQueryMetadata(Annotation a, bool defaultDescendantsValue, bool first, String propertyName) {
final selector = _readToken(a.arguments.arguments.first);
var descendants = defaultDescendantsValue;
var read = null;
a.arguments.arguments.skip(0).forEach((arg) {
if (arg is NamedExpression && arg.name.toString() == "descendants:")
descendants = naiveEval(arg.expression);
if (arg is NamedExpression) {
var name = arg.name.toString();
if (name == "descendants:") {
descendants = naiveEval(arg.expression);
} else if (name == "read:") {
read = _readToken(arg.expression);
}
}
});
final selectors = selector.value is String ?
selector.value.split(",").map( (value) => new CompileTokenMetadata(value: value) ).toList() :
[selector];
return new CompileQueryMetadata(
selectors: selectors, descendants: descendants, first: first, propertyName: propertyName);
selectors: selectors, descendants: descendants, first: first,
read: read, propertyName: propertyName);
}
List<CompileDiDependencyMetadata> _getCompileDiDependencyMetadata(

View File

@ -260,6 +260,9 @@ class _NgMetaIdentifierResolver {
void _resolveQueries(Map<String, NgMeta> ngMetaMap, List queries, String neededBy) {
queries.forEach((q) {
q.selectors.forEach((s) => s.identifier = _resolveIdentifier(ngMetaMap, neededBy, s.identifier));
if (q.read != null) {
q.read.identifier = _resolveIdentifier(ngMetaMap, neededBy, q.read.identifier);
}
});
}