fix(HtmlParser): allow ng-content elements regardless the namespace

relates to #5547
Closes #5745
This commit is contained in:
Victor Berchet 2015-12-09 10:47:10 -08:00
parent 7c13372721
commit 080469f8e6
2 changed files with 11 additions and 1 deletions

View File

@ -1,5 +1,6 @@
import {HtmlElementAst} from './html_ast'; import {HtmlElementAst} from './html_ast';
import {isBlank, isPresent} from 'angular2/src/facade/lang'; import {isBlank, isPresent} from 'angular2/src/facade/lang';
import {splitNsName} from './html_tags';
const NG_CONTENT_SELECT_ATTR = 'select'; const NG_CONTENT_SELECT_ATTR = 'select';
const NG_CONTENT_ELEMENT = 'ng-content'; const NG_CONTENT_ELEMENT = 'ng-content';
@ -31,7 +32,7 @@ export function preparseElement(ast: HtmlElementAst): PreparsedElement {
selectAttr = normalizeNgContentSelect(selectAttr); selectAttr = normalizeNgContentSelect(selectAttr);
var nodeName = ast.name.toLowerCase(); var nodeName = ast.name.toLowerCase();
var type = PreparsedElementType.OTHER; var type = PreparsedElementType.OTHER;
if (nodeName == NG_CONTENT_ELEMENT) { if (splitNsName(nodeName)[1] == NG_CONTENT_ELEMENT) {
type = PreparsedElementType.NG_CONTENT; type = PreparsedElementType.NG_CONTENT;
} else if (nodeName == STYLE_ELEMENT) { } else if (nodeName == STYLE_ELEMENT) {
type = PreparsedElementType.STYLE; type = PreparsedElementType.STYLE;

View File

@ -106,6 +106,15 @@ export function main() {
expect(humanizeTplAst(parsed)).toEqual([[NgContentAst]]); expect(humanizeTplAst(parsed)).toEqual([[NgContentAst]]);
}); });
it('should parse ngContent regardless the namespace', () => {
var parsed = parse('<svg><ng-content></ng-content></svg>', []);
expect(humanizeTplAst(parsed))
.toEqual([
[ElementAst, '@svg:svg'],
[NgContentAst],
]);
});
it('should parse bound text nodes', () => { it('should parse bound text nodes', () => {
expect(humanizeTplAst(parse('{{a}}', []))).toEqual([[BoundTextAst, '{{ a }}']]); expect(humanizeTplAst(parse('{{a}}', []))).toEqual([[BoundTextAst, '{{ a }}']]);
}); });