diff --git a/packages/compiler-cli/ngcc/src/migrations/utils.ts b/packages/compiler-cli/ngcc/src/migrations/utils.ts index 5524661a02..c51b95014b 100644 --- a/packages/compiler-cli/ngcc/src/migrations/utils.ts +++ b/packages/compiler-cli/ngcc/src/migrations/utils.ts @@ -51,7 +51,7 @@ export function createDirectiveDecorator( metaArgs.push(property('selector', metadata.selector)); } if (metadata.exportAs !== null) { - metaArgs.push(property('exportAs', metadata.exportAs)); + metaArgs.push(property('exportAs', metadata.exportAs.join(', '))); } args.push(reifySourceFile(ts.createObjectLiteral(metaArgs))); } @@ -77,7 +77,7 @@ export function createComponentDecorator( metaArgs.push(property('selector', metadata.selector)); } if (metadata.exportAs !== null) { - metaArgs.push(property('exportAs', metadata.exportAs)); + metaArgs.push(property('exportAs', metadata.exportAs.join(', '))); } return { name: 'Component', @@ -105,13 +105,8 @@ export function createInjectableDecorator(clazz: ClassDeclaration): Decorator { }; } -function property(name: string, value: string | string[]): ts.PropertyAssignment { - if (typeof value === 'string') { - return ts.createPropertyAssignment(name, ts.createStringLiteral(value)); - } else { - return ts.createPropertyAssignment( - name, ts.createArrayLiteral(value.map(v => ts.createStringLiteral(v)))); - } +function property(name: string, value: string): ts.PropertyAssignment { + return ts.createPropertyAssignment(name, ts.createStringLiteral(value)); } const EMPTY_SF = ts.createSourceFile('(empty)', '', ts.ScriptTarget.Latest); diff --git a/packages/compiler-cli/ngcc/test/integration/ngcc_spec.ts b/packages/compiler-cli/ngcc/test/integration/ngcc_spec.ts index f63bc646ac..e2387792c7 100644 --- a/packages/compiler-cli/ngcc/test/integration/ngcc_spec.ts +++ b/packages/compiler-cli/ngcc/test/integration/ngcc_spec.ts @@ -972,6 +972,7 @@ runInEachFileSystem(() => { @Directive({ selector: '[base]', + exportAs: 'base1, base2', }) export class BaseDir {} @@ -994,13 +995,14 @@ runInEachFileSystem(() => { const jsContents = fs.readFile(_(`/node_modules/test-package/index.js`)); expect(jsContents) .toContain( - 'DerivedDir.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: DerivedDir, selectors: [["", "base", ""]], ' + + 'DerivedDir.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: DerivedDir, ' + + 'selectors: [["", "base", ""]], exportAs: ["base1", "base2"], ' + 'features: [ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵCopyDefinitionFeature] });'); const dtsContents = fs.readFile(_(`/node_modules/test-package/index.d.ts`)); expect(dtsContents) .toContain( - 'static ɵdir: ɵngcc0.ɵɵDirectiveDefWithMeta;'); + 'static ɵdir: ɵngcc0.ɵɵDirectiveDefWithMeta;'); }); it('should generate a component definition with CopyDefinitionFeature for an undecorated child component',