diff --git a/modules/angular2/src/compiler/html_tags.ts b/modules/angular2/src/compiler/html_tags.ts
index 1253b94ae2..e393a0da5c 100644
--- a/modules/angular2/src/compiler/html_tags.ts
+++ b/modules/angular2/src/compiler/html_tags.ts
@@ -310,11 +310,16 @@ export class HtmlTagDefinition {
// see http://www.w3.org/TR/html51/syntax.html#optional-tags
// This implementation does not fully conform to the HTML5 spec.
var TAG_DEFINITIONS: {[key: string]: HtmlTagDefinition} = {
+ 'area': new HtmlTagDefinition({isVoid: true}),
+ 'embed': new HtmlTagDefinition({isVoid: true}),
'link': new HtmlTagDefinition({isVoid: true}),
'img': new HtmlTagDefinition({isVoid: true}),
'input': new HtmlTagDefinition({isVoid: true}),
+ 'param': new HtmlTagDefinition({isVoid: true}),
'hr': new HtmlTagDefinition({isVoid: true}),
'br': new HtmlTagDefinition({isVoid: true}),
+ 'source': new HtmlTagDefinition({isVoid: true}),
+ 'track': new HtmlTagDefinition({isVoid: true}),
'wbr': new HtmlTagDefinition({isVoid: true}),
'p': new HtmlTagDefinition({
closedByChildren: [
@@ -357,7 +362,7 @@ var TAG_DEFINITIONS: {[key: string]: HtmlTagDefinition} = {
}),
'td': new HtmlTagDefinition({closedByChildren: ['td', 'th'], closedByParent: true}),
'th': new HtmlTagDefinition({closedByChildren: ['td', 'th'], closedByParent: true}),
- 'col': new HtmlTagDefinition({closedByChildren: ['col'], requiredParents: ['colgroup']}),
+ 'col': new HtmlTagDefinition({requiredParents: ['colgroup'], isVoid: true}),
'svg': new HtmlTagDefinition({implicitNamespacePrefix: 'svg'}),
'math': new HtmlTagDefinition({implicitNamespacePrefix: 'math'}),
'li': new HtmlTagDefinition({closedByChildren: ['li'], closedByParent: true}),
diff --git a/modules/angular2/test/compiler/html_parser_spec.ts b/modules/angular2/test/compiler/html_parser_spec.ts
index fd55214414..eb709c6113 100644
--- a/modules/angular2/test/compiler/html_parser_spec.ts
+++ b/modules/angular2/test/compiler/html_parser_spec.ts
@@ -75,6 +75,19 @@ export function main() {
]);
});
+ it('should not error on void elements from HTML5 spec',
+ () => { // http://www.w3.org/TR/html-markup/syntax.html#syntax-elements without:
+ // - it can be present in head only
+ // - it can be present in head only
+ // - obsolete
+ // - obsolete
+ ['', '