diff --git a/modules/angular2/src/core/compiler/template_normalizer.ts b/modules/angular2/src/core/compiler/template_normalizer.ts index 9ad9a7b0fb25..6f8a36d67b28 100644 --- a/modules/angular2/src/core/compiler/template_normalizer.ts +++ b/modules/angular2/src/core/compiler/template_normalizer.ts @@ -55,10 +55,10 @@ export class TemplateNormalizer { var allStyles = templateMeta.styles.concat(visitor.styles); var allStyleAbsUrls = - visitor.styleUrls.map(url => this._urlResolver.resolve(templateAbsUrl, url)) - .concat(templateMeta.styleUrls.map( - url => this._urlResolver.resolve(directiveType.moduleUrl, url))); - allStyleAbsUrls = ListWrapper.filter(allStyleAbsUrls, isStyleUrlResolvable); + ListWrapper.filter(visitor.styleUrls, isStyleUrlResolvable) + .map(url => this._urlResolver.resolve(templateAbsUrl, url)) + .concat(ListWrapper.filter(templateMeta.styleUrls, isStyleUrlResolvable) + .map(url => this._urlResolver.resolve(directiveType.moduleUrl, url))); var allResolvedStyles = allStyles.map(style => { var styleWithImports = extractStyleUrls(this._urlResolver, templateAbsUrl, style); diff --git a/modules/angular2/test/core/compiler/template_normalizer_spec.ts b/modules/angular2/test/core/compiler/template_normalizer_spec.ts index d086ce68970a..ceb14fa99d33 100644 --- a/modules/angular2/test/core/compiler/template_normalizer_spec.ts +++ b/modules/angular2/test/core/compiler/template_normalizer_spec.ts @@ -27,11 +27,14 @@ import {TEST_PROVIDERS} from './test_bindings'; export function main() { describe('TemplateNormalizer', () => { var dirType: CompileTypeMetadata; + var dirTypeWithHttpUrl: CompileTypeMetadata; beforeEachBindings(() => TEST_PROVIDERS); beforeEach(() => { dirType = new CompileTypeMetadata({moduleUrl: 'package:some/module/a.js', name: 'SomeComp'}); + dirTypeWithHttpUrl = + new CompileTypeMetadata({moduleUrl: 'http://some/module/a.js', name: 'SomeComp'}); }); describe('loadTemplate', () => { @@ -284,6 +287,16 @@ export function main() { expect(template.styleUrls).toEqual(['package:some/module/test.css']); })); + it('should resolve relative style urls in styleUrls with http directive url', + inject([TemplateNormalizer], (normalizer: TemplateNormalizer) => { + var template = normalizer.normalizeLoadedTemplate( + dirTypeWithHttpUrl, new CompileTemplateMetadata( + {encapsulation: null, styles: [], styleUrls: ['test.css']}), + '', 'http://some/module/id'); + expect(template.styles).toEqual([]); + expect(template.styleUrls).toEqual(['http://some/module/test.css']); + })); + it('should normalize ViewEncapsulation.Emulated to ViewEncapsulation.None if there are no stlyes nor stylesheets', inject([TemplateNormalizer], (normalizer: TemplateNormalizer) => { var template = normalizer.normalizeLoadedTemplate(