diff --git a/packages/@ngtools/webpack/src/transformers/elide_imports.ts b/packages/@ngtools/webpack/src/transformers/elide_imports.ts index 1005e061b3af..a12bb030f77b 100644 --- a/packages/@ngtools/webpack/src/transformers/elide_imports.ts +++ b/packages/@ngtools/webpack/src/transformers/elide_imports.ts @@ -113,7 +113,7 @@ export function elideImports( }) .forEach((symbol) => { // Remove the whole declaration if it's a single import. - const nodeToRemove = symbol.singleImport ? symbol.importSpec : symbol.importDecl; + const nodeToRemove = symbol.singleImport ? symbol.importDecl : symbol.importSpec; ops.push(new RemoveNodeOperation(sourceFile, nodeToRemove)); }); diff --git a/packages/@ngtools/webpack/src/transformers/remove_decorators.spec.ts b/packages/@ngtools/webpack/src/transformers/remove_decorators.spec.ts index 3e30a0da0f3e..3fbfe4ad7203 100644 --- a/packages/@ngtools/webpack/src/transformers/remove_decorators.spec.ts +++ b/packages/@ngtools/webpack/src/transformers/remove_decorators.spec.ts @@ -108,5 +108,41 @@ describe('@ngtools/webpack transformers', () => { expect(oneLine`${result}`).toEqual(oneLine`${output}`); }); + + it('should not remove imports from types that are still used', () => { + const input = stripIndent` + import { Component, EventEmitter } from '@angular/core'; + + @Component({ + selector: 'app-root', + changeDetection: ChangeDetectionStrategy.OnPush, + templateUrl: './app.component.html', + styleUrls: ['./app.component.css'] + }) + export class AppComponent { + notify: EventEmitter = new EventEmitter(); + title = 'app'; + } + `; + const output = stripIndent` + import { EventEmitter } from '@angular/core'; + + export class AppComponent { + constructor() { + this.notify = new EventEmitter(); + this.title = 'app'; + } + } + `; + + const { program, compilerHost } = createTypescriptContext(input); + const transformer = removeDecorators( + () => true, + () => program.getTypeChecker(), + ); + const result = transformTypescript(undefined, [transformer], program, compilerHost); + + expect(oneLine`${result}`).toEqual(oneLine`${output}`); + }); }); });