Ich habe ein Multi-App-Angular-Cli-Projekt mit Code-Sharing.AOT-Compiler erzeugt falschen Import
Grundsätzlich sieht die Struktur wie folgt vor:
- src - Haupt
- app.component - Bootstrap-Komponente
- app.module
- geteilt - gemeinsame Anwendungsteile
- demo.component
- shared.module
- Verlängerung - zweite Anwendung sollten den wichtigsten
- Extension- verlängern app.component - Bootstrap-Komponente
- extension.module
SharedModule
sowohl von AppModule
und ExtensionModule
importiert (was erklärt, und exportiert die DemoComponent
) ist. DemoComponent
wird dann den Vorlagen von AppComponent
und ExtensionAppComponent
hinzugefügt.
Alles funktioniert nur gut, wenn JIT-Compiler (ng serve
, ng serve --app extension
) verwenden, aber AOT-Compiler schlägt fehl sagen:
Can't resolve '../../../src/app/demo/demo.component.ngfactory'
in diese Suche erzeugte Datei auf GENDIR/app/demo/demo.component.ngfactory
wir folgendes erhalten:
import * as i0 from './demo.component.css.shim.ngstyle';
import * as i1 from '@angular/core';
import * as i2 from './demo.component';
Der letzte Import ist der, der fehlschlägt, weil es keine 'demo.component' im Ordner GENDIR/app/demo
gibt. Überraschenderweise existiert die Datei, die als i0
importiert wird, und enthält entsprechende Stile.
UPDATE: sieht aus wie das Problem ist in ngc
. Es würde auch nicht funktionieren, wenn Sie einen paths
Alias in tsconfig.json
hinzufügen. Es gibt ein paar Fragen darüber auf Github (https://github.com/angular/angular/issues/13487)