diff --git a/packages/compiler-cli/src/transformers/compiler_host.ts b/packages/compiler-cli/src/transformers/compiler_host.ts index 2796f7a214..08c25472a3 100644 --- a/packages/compiler-cli/src/transformers/compiler_host.ts +++ b/packages/compiler-cli/src/transformers/compiler_host.ts @@ -192,7 +192,8 @@ export class TsCompilerAotCompilerTypeCheckHostAdapter implements ts.CompilerHos const containingFilePackageName = getPackageName(containingFile); let moduleName: string; - if (importedFilePackagName === containingFilePackageName) { + if (importedFilePackagName === containingFilePackageName || + GENERATED_FILES.test(originalImportedFile)) { const rootedContainingFile = relativeToRootDirs(containingFile, this.rootDirs); const rootedImportedFile = relativeToRootDirs(importedFile, this.rootDirs); diff --git a/packages/compiler-cli/test/transformers/compiler_host_spec.ts b/packages/compiler-cli/test/transformers/compiler_host_spec.ts index b5e7e398cf..caf7d4ab29 100644 --- a/packages/compiler-cli/test/transformers/compiler_host_spec.ts +++ b/packages/compiler-cli/test/transformers/compiler_host_spec.ts @@ -90,6 +90,14 @@ describe('NgCompilerHost', () => { .toBe('./a/child'); }); + it('should use a relative import when accessing generated files, even if crossing packages', + () => { + expect(host.fileNameToModuleName( + '/tmp/node_modules/mod2/b.ngfactory.d.ts', + '/tmp/node_modules/mod1/a.ngfactory.d.ts')) + .toBe('../mod2/b.ngfactory'); + }); + it('should support multiple rootDirs when accessing a source file form a source file', () => { const hostWithMultipleRoots = createHost({ options: {