我有一个Angular2应用程序,它具有以下模块结构:
/app
/content
/models
resource.ts
container.ts
entity-type.ts
index.ts
/services
/whatever
whatever.service.ts
我的模型index.ts
看起来像是:
export * from './resource';
export * from './container';
export * from './entity-type';
我希望能够将所有模型加载到whatever.service.ts
。
import {Resource, Container} from '../../models';
我的system-config.js
文件的桶加载部分如下所示:
const barrels: string[] = [
// Angular specific barrels.
'@angular/core',
'@angular/common',
'@angular/compiler',
'@angular/http',
'@angular/router',
'@angular/platform-browser',
'@angular/platform-browser-dynamic',
// Thirdparty barrels.
'rxjs',
// App specific barrels.
'app',
'app/shared',
'app/content',
/** @cli-barrel */
];
TypeScript编译时没有错误,但是,在浏览器中,我从系统加载程序和区域中得到以下错误,说明找不到某些文件。
获取http://localhost:4200/app/content/models.js 404(未找到)scheduleTask @ zone.js:101ZoneDelegate.scheduleTask @ zone.js:336Zone.scheduleMacroTask @ zone.js:273(匿名函数)@ zone.js:122send @ VM59771: 3fetchTextFromURL @system.src.js:1154(匿名函数)@system.src.js:1735ZoneAwarePromise @ zone.js:584(匿名函数)@system.src.js:1734(匿名函数)@system.src.js: 2759(匿名函数)@system.src.js:3333(匿名函数)@system.src.js:3600(匿名函数)@system.src.js:3985(匿名函数)@system.src.js:4448(匿名函数)@system.src.js:4700(匿名函数)@system.src.js:406ZoneDelegate.invoke @ zone.js:323Zone.run @ zone.js:216(匿名函数)@ zone.js:571ZoneDelegate。 invokeTask @ zone.js:356Zone.runTask @ zone.js:256drainMicroTaskQueue @ zone.js:474ZoneTask.invoke @ zone.js:426 zone.js:461未处理的Promise拒绝:错误:XHR错误(404 Not Found)loading http://localhost:4200/app/content/models.js 在XMLHttpRequest.wrapFn [as _onreadystatechange](http://localhost:4200/vendor/zone.js/dist/zone.js:769:30) 在ZoneDelegate.invokeTask(http://localhost:4200/vendor/zone.js/dist/zone.js:356:38) 在Zone.runTask(http://localhost:4200/vendor/zone.js/dist/zone.js:256:48) 在XMLHttpRequest.ZoneTask.invoke(http://localhost:4200/vendor/zone.js/dist/zone.js:423:34) 将http://localhost:4200/app/content/models.js加载为" ../../ models"来自http://localhost:4200/app/content/services/container/container.service.js;区域:;任务:Promise.then;值:错误:错误:XHR错误(404未找到)loading http://localhost:4200/app/content/models.js(...)consoleError @ zone.js:461_loop_1 @ zone.js:490drainMicroTaskQueue @ zone.js:494ZoneTask.invoke @ zone.js:426 zone.js:463错误:未捕获(在承诺中):错误:错误:XHR错误(404未找到)加载http://localhost:4200/app/content/models.js(...)
当我直接从它的.ts
文件中导入每个模型时,一切正常。
import { EntityType } from '../../models/entity-type';
import { Container } from '../../models/container';
如何导入模块而不会在Angular2中导致错误?
答案 0 :(得分:11)
据我所知,这可能是你想要的:
./ model / index.ts看起来像这样:
export * from './resource';
export * from './container';
export * from './entity-type';
然后我们假设您要从whatever.service.ts
导入它whatever.service.ts看起来像这样:
import {Resource, Container} from '../models';
因为您在models文件夹中指定了索引文件。您应该只能导入该文件夹。如上所述。
希望这更清楚。
答案 1 :(得分:0)
创建一个新的.ts
是models
文件夹:
新文件all_models.ts
:
import * from './entity-type';
import * from './container';
...
然后你就可以了:
import {Resource, Container} from '../../models/all_models';
此处唯一的问题是要记住让all_modules.ts
保持最新,并添加对带模型的任何新.ts
文件的引用。