Wie importiere ich ein Fass nur nach Ordnernamen?

Angular 2 Barrels

In Angular 2 versuche ich, Fässer zum Laufen zu bringen, wie im @ beschriebeDokumentatio.

Das offizielleAngular 2 Styleguide spricht über die Verwendung vonFässe zu aggregieren und zu verkürzenimport Anweisungen.

Ich finde heraus, dass ich für einige Fässer das @ angeben muindex JavaScript-Dateiname beim Import, wenn ich nicht muss.

Barrel Beispiel

(Ändern Sie die Datei app / app.component.ts in Zeile 12)

Nachdem ich dies in meinem aktuellen Projekt festgestellt habe (das unter ASP.NET ausgeführt wird), habe ich ein @ erstell Plunker um das Problem zu demonstrieren, bei dem ich die Tour of Heroes geändert habe, um Fässer zu verwenden.

Imapp/app.component, der grundlegende Weg zum Import ist wie folgt:

import { HeroService } from './hero.service';
import { HeroesComponent } from './heroes.component';
import { HeroDetailComponent } from './hero-detail.component';

Aber wenn Sie stattdessen ein Fass verwenden, sieht die Importdefinition folgendermaßen aus:

import {
  HeroService,
  HeroesComponent,
  HeroDetailComponent
} from '../app';

Dasfrom '../app'; -Zeile kennzeichnet eine Datei mit dem Namenindex.ts die die exportierten / importierten Komponenten enthalten:

// app/index.ts
export * from './hero-detail.component';
export * from './hero.service';
export * from './heroes.component';

Aber das funktioniert bei mir nicht in allen Fällen. Der einzige Weg, wie ich das richtig hinbekommen habe, ist das explizite Einfügen desindex Dateiname

import {
  HeroService,
  HeroesComponent,
  HeroDetailComponent
} from '../app/index'; // have to indicate 'index'

Wie kann ich das zum Laufen bringen, wo dasindex.js Dateiname ist impliziert?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage