diff --git a/modules/angular2/src/compiler/html_lexer.ts b/modules/angular2/src/compiler/html_lexer.ts
index e3a725ce9d..f410fbdb73 100644
--- a/modules/angular2/src/compiler/html_lexer.ts
+++ b/modules/angular2/src/compiler/html_lexer.ts
@@ -378,7 +378,9 @@ class _HtmlTokenizer {
let savedPos = this._savePosition();
let lowercaseTagName;
try {
- this._attemptUntilFn(isNotWhitespace);
+ if (!isAsciiLetter(this.peek)) {
+ throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getLocation());
+ }
var nameStart = this.index;
this._consumeTagOpenStart(start);
lowercaseTagName = this.inputLowercase.substring(nameStart, this.index);
diff --git a/modules/angular2/test/compiler/html_lexer_spec.ts b/modules/angular2/test/compiler/html_lexer_spec.ts
index 5d3f741156..5e61887eef 100644
--- a/modules/angular2/test/compiler/html_lexer_spec.ts
+++ b/modules/angular2/test/compiler/html_lexer_spec.ts
@@ -174,8 +174,8 @@ export function main() {
]);
});
- it('should allow whitespace', () => {
- expect(tokenizeAndHumanizeParts('< test >'))
+ it('should allow whitespace after the tag name', () => {
+ expect(tokenizeAndHumanizeParts('