fix(ivy): generating incorrect tag name with namespace (#28298)
Fixes the template generation function generating an incorrect tag name when the element has a namespace (e.g. `:svg:circle` gets generated rather than `circle`). PR Close #28298
This commit is contained in:
parent
1fd673504c
commit
d8f2318811
|
@ -2206,9 +2206,6 @@ describe('compiler compliance', () => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO(akushnir): tag name generated for <g> element inside <svg> is incorrect.
|
|
||||||
// It's generated as ":svg:g", when it should be just "g". Potentially related to
|
|
||||||
// the issue described in FW-672.
|
|
||||||
it('should support embedded views in the SVG namespace', () => {
|
it('should support embedded views in the SVG namespace', () => {
|
||||||
const files = {
|
const files = {
|
||||||
app: {
|
app: {
|
||||||
|
@ -2266,7 +2263,7 @@ describe('compiler compliance', () => {
|
||||||
if (rf & 1) {
|
if (rf & 1) {
|
||||||
$r3$.ɵnamespaceSVG();
|
$r3$.ɵnamespaceSVG();
|
||||||
$r3$.ɵelementStart(0,"svg");
|
$r3$.ɵelementStart(0,"svg");
|
||||||
$r3$.ɵtemplate(1, MyComponent__svg_g_1_Template, 2, 0, ":svg:g", $t1_attrs$);
|
$r3$.ɵtemplate(1, MyComponent__svg_g_1_Template, 2, 0, "g", $t1_attrs$);
|
||||||
$r3$.ɵelementEnd();
|
$r3$.ɵelementEnd();
|
||||||
}
|
}
|
||||||
if (rf & 2) { $r3$.ɵelementProperty(1,"forOf",$r3$.ɵbind(ctx.items)); }
|
if (rf & 2) { $r3$.ɵelementProperty(1,"forOf",$r3$.ɵbind(ctx.items)); }
|
||||||
|
|
|
@ -10,7 +10,7 @@ import {flatten, sanitizeIdentifier} from '../../compile_metadata';
|
||||||
import {BindingForm, BuiltinFunctionCall, LocalResolver, convertActionBinding, convertPropertyBinding} from '../../compiler_util/expression_converter';
|
import {BindingForm, BuiltinFunctionCall, LocalResolver, convertActionBinding, convertPropertyBinding} from '../../compiler_util/expression_converter';
|
||||||
import {ConstantPool} from '../../constant_pool';
|
import {ConstantPool} from '../../constant_pool';
|
||||||
import * as core from '../../core';
|
import * as core from '../../core';
|
||||||
import {AST, ASTWithSource, AstMemoryEfficientTransformer, BindingPipe, BindingType, FunctionCall, ImplicitReceiver, Interpolation, LiteralArray, LiteralMap, LiteralPrimitive, ParsedEvent, ParsedEventType, PropertyRead} from '../../expression_parser/ast';
|
import {AST, AstMemoryEfficientTransformer, BindingPipe, BindingType, FunctionCall, ImplicitReceiver, Interpolation, LiteralArray, LiteralMap, LiteralPrimitive, ParsedEvent, ParsedEventType, PropertyRead} from '../../expression_parser/ast';
|
||||||
import {Lexer} from '../../expression_parser/lexer';
|
import {Lexer} from '../../expression_parser/lexer';
|
||||||
import {Parser} from '../../expression_parser/parser';
|
import {Parser} from '../../expression_parser/parser';
|
||||||
import * as i18n from '../../i18n/i18n_ast';
|
import * as i18n from '../../i18n/i18n_ast';
|
||||||
|
@ -769,7 +769,10 @@ export class TemplateDefinitionBuilder implements t.Visitor<void>, LocalResolver
|
||||||
const parameters: o.Expression[] = [
|
const parameters: o.Expression[] = [
|
||||||
o.literal(templateIndex),
|
o.literal(templateIndex),
|
||||||
o.variable(templateName),
|
o.variable(templateName),
|
||||||
o.literal(template.tagName),
|
|
||||||
|
// We don't care about the tag's namespace here, because we infer
|
||||||
|
// it based on the parent nodes inside the template instruction.
|
||||||
|
o.literal(template.tagName ? splitNsName(template.tagName)[1] : template.tagName),
|
||||||
];
|
];
|
||||||
|
|
||||||
// find directives matching on a given <ng-template> node
|
// find directives matching on a given <ng-template> node
|
||||||
|
|
Loading…
Reference in New Issue