如何让我的Angular 2应用程序与桶文件导入一起使用?

时间:2016-05-16 17:50:48

标签: angular typescript systemjs

我正在尝试遵循Angular 2风格指南04-10创建和导入桶:https://angular.io/docs/ts/latest/guide/style-guide.html

当我运行我的应用程序时,angular现在尝试加载一个不存在的文件:“my-component-name-here.js”。

为了说明这个问题,我修改了Angular 2示例应用程序以使用一个桶文件,它现在也引发了404错误。

我将英雄组件文件放入他们自己的名为heroes的文件夹中。我创建了一个名为heroes / index.ts的新文件:

export * from './heroes/heroes.component';

我将app.component.ts中的import语句更改为:

import { HeroesComponent } from './heroes';

当应用程序尝试加载时,会出现以下错误,如开发人员控制台中所示:

Error: Error: XHR error (404 Not Found) loading app/heroes.ts(…)

在这里找到了plunkr: http://plnkr.co/edit/YXY0PwuFot1g1s6qTqDt?p=preview

我怀疑这与SystemJS有关,但我不太了解它来修复它。有人可以帮忙吗?提前谢谢!

2 个答案:

答案 0 :(得分:13)

你必须做一些改变才能使桶工作,

index.ts

   export * from './heroes.component';

<强> systemjs.config.js

map添加条目,如下所示

  'heroes':                     'app/heroes', 

然后在packages中创建如下条目,

  'heroes': { main: 'index.ts',  defaultExtension: 'ts' },

这将解决barrel问题,但不会完全解决您的所有问题,因为您在英雄组件中也引用了hero-detail,因此您必须处理这些问题。

希望这会有所帮助!!

答案 1 :(得分:0)

我可以在你的plunkr中看到,HeroesComponent类位于app/heroes/heroes.component.ts文件中。所以我会用以下代码:

import { HeroesComponent } from './heroes.component';