Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角域模型_Javascript_Angular_Typescript_Angular Cli - Fatal编程技术网

Javascript 角域模型

Javascript 角域模型,javascript,angular,typescript,angular-cli,Javascript,Angular,Typescript,Angular Cli,目前我正在开发angular应用程序,它是通过angular CLI生成的&它正在使用webpack 我们有50多个ModelTypeScript类来保存employee.model.ts、person.model.ts等数据 目前在我们的项目中,它分散在不同的模块中。我们决定将所有模型放在一个角度模块中&然后所有其他模块应该从一个特定模块导入这些域模型 我如何做到这一点 我读过几篇关于typescript别名特性的文章,在tsconfig.json文件中我可以添加path属性。这就是我迄今为止

目前我正在开发angular应用程序,它是通过angular CLI生成的&它正在使用webpack

我们有50多个ModelTypeScript类来保存employee.model.ts、person.model.ts等数据

目前在我们的项目中,它分散在不同的模块中。我们决定将所有模型放在一个角度模块中&然后所有其他模块应该从一个特定模块导入这些域模型

我如何做到这一点

我读过几篇关于typescript别名特性的文章,在tsconfig.json文件中我可以添加path属性。这就是我迄今为止所做的尝试

ProjectDirectory/src/app

ProjectDirectory/src/app/models
模型文件夹包含employee.model.ts、person.model.ts和50+其他模型

tsconfig.js

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": ["node_modules/@types"],
    "lib": ["es2017", "dom"],
    "baseUrl": "src",
    "paths": {
      "@my-models/*": ["models/*"]
    }
  }
}
我在其他组件上尝试的导入语句

import { Employee } from '@my-models'; //<== DOESN'T WORK & THROWS ERROR.
是否有任何干净的方法将所有模型组织在一个位置&使用没有相对路径的干净导入语句,例如

import {Xyz} from './././././abc.module';
提前感谢大家花时间阅读问题

注意:我读了下面的文章,但它不起作用


建议的处理方法是使用

在您的
models
文件夹中,您可以添加一个
index.ts
文件,该文件导出该文件夹中包含的所有类:

export * from './abc.module.ts';   // re-export all of its exports
export * from './xyz.module.ts'; // re-export all of its exports
...
现在需要进口的是桶:

import { Abc, Xyz } from './path-to-models';

您可以创建一个可重用的角度模块。请看ng Packager:这是一种简单的方法。但是,您确定要执行此操作吗?Google风格指南和LIFT原则()建议摒弃将所有模型放在一个地方、将所有服务放在一个地方等传统方法。相反,将功能相关的代码尽可能地放在一起。遵循LIFT时,您会发现不需要有这么多嵌套的导入语句(即,
import{…}from'../../../../../../../../some.module'
的问题消失了)感谢pixelbits为我指明了正确的方向。但是,我们有一些域模型,可以从位于不同模块中的不同服务使用,这些服务返回相同的模型。我们不希望在每个模块中都复制这样的模型。这就是为什么我在寻找一些解决方案,在这些解决方案中,无论在哪个模块中我需要这样的域模型,我都可以有更清晰的导入语句。感谢您花时间回答这个问题。我认为这对我的场景肯定有帮助。我可以创建一个名为models的文件夹,将所有的模型都放在里面,然后像你们提到的那样创建barrel。然而,还有一个问题没有得到解答,那就是如何从“@mycompanyname models”获取漂亮的导入语句,例如
import{xyz,abc}。无论我在其中编写import语句的typescript文件的位置如何,这都会起作用。这仍然是可能的吗?我相信这仍然是可能的,尽管我自己还没有测试过。通读一遍,尤其是在
tsconfig.json
中使用正确的配置,它应该可以工作,尽管AOT似乎有问题。谢谢@Und3rTow。在遵循您提到的建议和您发布的github链接上提出的建议后,效果非常好。我真的很感谢你的帮助。
import { Abc, Xyz } from './path-to-models';