fix(compiler-cli): support namespaced query types in directives (#38959)
Previously directive "queries" that relied upon a namespaced type ```ts queries: { 'mcontent': new core.ContentChild('test2'), } ``` caused an error to be thrown. This is now supported. PR Close #38959
This commit is contained in:

committed by
atscott

parent
f4fee86f77
commit
2736a43ecb
@ -463,12 +463,20 @@ export function extractQueriesFromDecorator(
|
||||
}
|
||||
reflectObjectLiteral(queryData).forEach((queryExpr, propertyName) => {
|
||||
queryExpr = unwrapExpression(queryExpr);
|
||||
if (!ts.isNewExpression(queryExpr) || !ts.isIdentifier(queryExpr.expression)) {
|
||||
if (!ts.isNewExpression(queryExpr)) {
|
||||
throw new FatalDiagnosticError(
|
||||
ErrorCode.VALUE_HAS_WRONG_TYPE, queryData,
|
||||
'Decorator query metadata must be an instance of a query type');
|
||||
}
|
||||
const type = reflector.getImportOfIdentifier(queryExpr.expression);
|
||||
const queryType = ts.isPropertyAccessExpression(queryExpr.expression) ?
|
||||
queryExpr.expression.name :
|
||||
queryExpr.expression;
|
||||
if (!ts.isIdentifier(queryType)) {
|
||||
throw new FatalDiagnosticError(
|
||||
ErrorCode.VALUE_HAS_WRONG_TYPE, queryData,
|
||||
'Decorator query metadata must be an instance of a query type');
|
||||
}
|
||||
const type = reflector.getImportOfIdentifier(queryType);
|
||||
if (type === null || (!isCore && type.from !== '@angular/core') ||
|
||||
!QUERY_TYPES.has(type.name)) {
|
||||
throw new FatalDiagnosticError(
|
||||
|
Reference in New Issue
Block a user