diff --git a/src/angular/metadataReader.ts b/src/angular/metadataReader.ts index dbf2a2cbc..0c1e0ab29 100644 --- a/src/angular/metadataReader.ts +++ b/src/angular/metadataReader.ts @@ -125,7 +125,7 @@ export class MetadataReader { ) => this._resolve(url).fmap(style => ({ node: undefined, - style: normalizeTransformed(Config.transformStyle(style!)), + style: normalizeTransformed(Config.transformStyle(style!, url)), url })) ) diff --git a/test/angular/metadataReader.spec.ts b/test/angular/metadataReader.spec.ts index 80e4a1d8b..bd54abef9 100644 --- a/test/angular/metadataReader.spec.ts +++ b/test/angular/metadataReader.spec.ts @@ -272,6 +272,47 @@ describe('metadataReader', () => { } }); + it('should pass url to Config.transformStyle when using styleUrls', () => { + let styleUrl = 'test.scss'; + let invoked = false; + const bak = Config.transformStyle; + + try { + Config.transformStyle = (code, url) => { + invoked = true; + expect(url).to.be.an('string'); + expect(url!.endsWith('.scss')).eq(true); + return { code }; + }; + + const code = ` + @Component({ + selector: 'foo', + moduleId: module.id, + templateUrl: 'foo.html', + styleUrls: ['${styleUrl}'] + }) + class Bar {} + `; + + const reader = new MetadataReader(new FsFileResolver()); + const ast = getAst(code, __dirname + '/../../test/fixtures/metadataReader/moduleid/foo.ts'); + const classDeclaration = last(ast.statements); + expect(invoked).eq(false); + const metadata = reader.read(classDeclaration)!; + expect(metadata instanceof ComponentMetadata).eq(true); + expect(metadata.selector).eq('foo'); + const m = metadata; + expect(m.template!.template.code.trim()).eq('
'); + expect(m.template!.url!.endsWith('foo.html')).eq(true); + expect(m.styles![0]!.style.code).eq(''); + expect(m.styles![0]!.url).to.be.an('string'); + expect(invoked).eq(true); + } finally { + Config.transformStyle = bak; + } + }); + it('should work work with templates with "`"', () => { const code = ` @Component({ diff --git a/test/fixtures/metadataReader/moduleid/test.scss b/test/fixtures/metadataReader/moduleid/test.scss new file mode 100644 index 000000000..e69de29bb