Skip to content

nsbarsukov/ng-import-bug-repro

Repository files navigation

Reproduction

  1. Create workspace
ng new app --directory=./  --minimal --style=css --ssr=false --zoneless=true --ai-config=none
  1. Create libraries
ng generate library lib-a
ng generate library lib-b
ng generate library lib-c
  1. Fill projects/lib-a/src/lib/lib-a.ts:
import { Directive } from '@angular/core';

@Directive({
  selector: '[baseEntity1]',
})
export class BaseEntity1 {}

@Directive({
  selector: '[baseEntity2]',
  host: {'[style.background-color]': '"green"'}
})
export class BaseEntity2 {}

export const BaseEntities = [
  BaseEntity1,
  BaseEntity2,
] as const;
  1. Fill projects/lib-b/src/lib/lib-b.ts:
import { Directive } from '@angular/core';
import { BaseEntities } from 'lib-a';

@Directive({
  selector: '[moreComplexEntity]',
  host: { '[style.background-color]': '"red"' },
})
export class MoreComplexEntity {}

export const UserFriendlyImport = [...BaseEntities, MoreComplexEntity] as const;
  1. Fill projects/lib-с/src/lib/lib-c.ts:
import {Component} from '@angular/core';
import {UserFriendlyImport} from 'lib-b';

@Component({
  selector: 'comp-from-library',
  imports: [UserFriendlyImport],
  template: `
    <div baseEntity2>123</div>
    <div moreComplexEntity>123</div>
  `,
})
export class LibraryComponent {}
  1. Replace all src/app/app.ts with the following content:
import {Component} from '@angular/core';
import {LibraryComponent} from 'lib-c';

@Component({
  selector: 'app-root',
  imports: [LibraryComponent],
  template: `<comp-from-library />`,
})
export class App {}
  1. Run
ng build lib-a && ng build lib-b && ng build lib-c && ng build app

It logs error:

✘ [ERROR] NG2012: Component imports must be standalone components, directives, pipes, or must be NgModules. [plugin angular-compiler]

    src/app/app.ts:6:12:
      6 │   imports: [LibraryComponent],
        ╵             ~~~~~~~~~~~~~~~~
  1. Make these changes inside projects/lib-b/src/lib/lib-b.ts
- export const UserFriendlyImport = [...BaseEntities, MoreComplexEntity] as const;
+ export const UserFriendlyImport = [BaseEntity1, BaseEntity2, MoreComplexEntity] as const;

No error!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors