diff --git a/packages/compiler/src/ml_parser/html_tags.ts b/packages/compiler/src/ml_parser/html_tags.ts index bcc4da9e1e94..2a4c6253ad76 100644 --- a/packages/compiler/src/ml_parser/html_tags.ts +++ b/packages/compiler/src/ml_parser/html_tags.ts @@ -75,7 +75,7 @@ let TAG_DEFINITIONS!: {[key: string]: HtmlTagDefinition}; export function getHtmlTagDefinition(tagName: string): HtmlTagDefinition { if (!TAG_DEFINITIONS) { DEFAULT_TAG_DEFINITION = new HtmlTagDefinition({canSelfClose: true}); - TAG_DEFINITIONS = { + TAG_DEFINITIONS = Object.assign(Object.create(null), { 'base': new HtmlTagDefinition({isVoid: true}), 'meta': new HtmlTagDefinition({isVoid: true}), 'area': new HtmlTagDefinition({isVoid: true}), @@ -142,10 +142,10 @@ export function getHtmlTagDefinition(tagName: string): HtmlTagDefinition { }), 'textarea': new HtmlTagDefinition( {contentType: TagContentType.ESCAPABLE_RAW_TEXT, ignoreFirstLf: true}), - }; + }); new DomElementSchemaRegistry().allKnownElementNames().forEach(knownTagName => { - if (!TAG_DEFINITIONS.hasOwnProperty(knownTagName) && getNsPrefix(knownTagName) === null) { + if (!TAG_DEFINITIONS[knownTagName] && getNsPrefix(knownTagName) === null) { TAG_DEFINITIONS[knownTagName] = new HtmlTagDefinition({canSelfClose: false}); } }); diff --git a/packages/compiler/test/ml_parser/html_parser_spec.ts b/packages/compiler/test/ml_parser/html_parser_spec.ts index c048aba5bced..8dc7e45c4f4d 100644 --- a/packages/compiler/test/ml_parser/html_parser_spec.ts +++ b/packages/compiler/test/ml_parser/html_parser_spec.ts @@ -240,6 +240,12 @@ import {humanizeDom, humanizeDomSourceSpans, humanizeLineColumn, humanizeNodes} ]); expect(parsed.errors).toEqual([]); }); + + it('should parse element with JavaScript keyword tag name', () => { + expect(humanizeDom(parser.parse('', 'TestComp'))).toEqual([ + [html.Element, 'constructor', 0] + ]); + }); }); describe('attributes', () => {