问题标签 [ng-modules]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
131 浏览

javascript - Angular - 为延迟加载模块提供全局服务

所以,我的 Angular 应用程序中有 3 个模块。

我们知道,出于延迟加载行为的目的,我无法在 AppModule 中导入ClinicModulePatientModule

但是, ClinicModule 内部有一个名为PatientGroupService的服务。

我在 ClinicModule 中使用该服务进行 CRUD 操作,并在 PatientModule 中使用该服务来提供 PatientGroup 列表。

所以,我在两个模块中都需要它,我发现,在 AppModule 中只获取一个 PatientGroupService 实例而不导入 ClinicModule 的唯一方法是直接在 AppModule 上提供 PatientGroupService,就像这样

您可能注意到,它不是“全局服务”,只是用于 2 个非主要模块的服务。

它有效,但我想知道:

  • 这是实现我目标的“正确方法”吗?
  • 还有另一种/更好的方法吗?
0 投票
2 回答
1549 浏览

angular - 在 Angular4 中找不到“AppModule”的 NgModule 元数据我无法找到它在 main.ts 中显示的原因

这是我的 package.json 文件,我对类型脚本和角度 cli 的版本有疑问,一些结果也说是纱线问题。

我的 main.ts 文件:“控制台在 main.ts 的最后一行显示错误,这是平台浏览器动态 ()”

这是 app.module.ts 文件:“查看是否存在导出导入引导或声明错误”`

`

这是 angularcli.json :“对于我项目的核心,请解决我找不到的问题”

这里是 app.component.ts

“这是我的问题的结束,请找到一些解决方案”

0 投票
0 回答
742 浏览

angular - 角度共享包:意外值'' 由模块 'AppModule' 导入。请添加@NgModule 注释

我正在开发一个新的 Angular(基于 cli)应用程序。在对未来项目的预期中,我试图将公共特定领域的服务拆分为一个共享包NgModule到第二个应用程序中,该应用程序是我的主应用程序的文件系统对等,如下所示:

当我npm serve主应用程序时,我收到错误消息:

Uncaught Error: Unexpected value 'SharedServicesModule' imported by the module 'AppModule'. Please add a @NgModule annotation.

我知道 的问题npm link,所以必须 - 尽我所能 - 根据Angular CLI 链接库的故事进行设置。(将共享包托管为私有 NPM 模块是可能的,但我被要求先调查其他选项。)

我已经在 SO 和 Gitub 上看到了很多关于这个问题的问题,并尝试了各种建议的解决方案。我猜我错过了一些小细节,但我对所有活动部件的理解还不够好,无法分辨出它是什么。请多看几眼!

这是我所拥有的:

共享模块

包.json 共享服务.module.ts 共享-test.service.ts index.js

主应用

app.module.ts tsconfig.app.json

非常感谢任何帮助、指点、线索。

0 投票
3 回答
722 浏览

angular - Angular 2/4:是否可以将类封装在 NgModule 中?

我有几个要包含在模块中的类,因此我可以只导入模块,因为它是一个不同的包,并从中使用这些类。这是一个小例子:

human.ts(我的类文件)

test.module.ts(我的模块文件)

如何在组件中实例化 Human 类?我都试过了:

但如果我这样做,new Human()我仍然会得到cannot find name Human

0 投票
1 回答
297 浏览

javascript - 空 .forRoot() 在 angular2 中究竟做了什么?

我见过人们在他们的项目中使用 .forRoot()以及主要的 forRoot(paths inside...) ,这将他们带到了子 URL。

这个空的root的目的是什么?

示例(它用于定义模块的导入):

0 投票
1 回答
2511 浏览

angular - Angular - 如果已在其他地方导入不必要的 ngModules 是否会增加文件大小?

我正在使用一个相当大的 Angular 应用程序,目前在一个共享模块中拥有所有共享组件和模块,每当我需要它导出的任何内容时,我都会导入它。

但是,我有一些小的功能模块,它们只需要共享模块中的很少模块,然后我是否应该增加架构的复杂性和模块化以便只导入我需要的模块,即使它们是在其他地方导入的?

Angular文档指出已经在另一个模块中导入的导入模块被缓存并且不是问题,但这意味着什么,应用程序会变得更慢/更大吗?

示例:模块 1 导入 A、B、C。模块 2 导入 A、C、D。

如果我在两个模块中导入 A、B、C、D(例如通过共享模块),会不会有性能损失?

0 投票
1 回答
305 浏览

angular - Angular2:将包含指令和服务的功能分解为模块的最佳实践是什么?

我计划在 Angular2 中开发一个功能来为社区做出贡献。

该功能由一项指令和一项服务组成。

我想知道如何最好地将功能打包到一个模块(或多个模块)中。

  • 服务必须是全局的,所以它必须由用户导入到核心模块中——它不能被导入到延迟加载的模块中。
  • 该指令可以在用户需要使用的地方导入

为了让它工作,我必须创建两个不同的模块:一个包含服务,应该由核心模块导入和重新导出;另一个包含指令,可以在用户需要的地方导入,也可以在共享模块中全局导入

现在,我有点不喜欢这种配置,因为我必须将我的功能分成两个模块。

我知道,知道 Angular2 如何工作的用户应该能够毫无问题地设置它,但如果可以将所有内容包装在 ONE 模块中,我仍然更愿意?目前实现这一目标的最佳实践是哪些?

目前我没有看到任何不同的解决方案:因为如果我将服务和指令放在同一个模块中,那么当我需要在组件中导入指令时,服务将包含在同一个导入中;如果组件是延迟加载的,这将为该组件创建第二个服务副本,这是错误的。

在此先感谢您的帮助

0 投票
1 回答
23128 浏览

angular - 错误:未找到组件工厂。你把它添加到@NgModule.entryComponents 了吗?

我正在尝试在我的主页上创建一个弹出框。所以我创建了以下功能..

在我的 homepage.module.ts 中,我添加了 testComponent 作为入口组件。

但是当我单击该弹出按钮时,我仍然收到此错误。

而且我很困惑为什么要将此添加到条目组件中?

0 投票
0 回答
323 浏览

javascript - 无法使用延迟加载 ionic3 打开 ModalController

我正在我的 ionic 3/angular5 应用程序中实现延迟加载以提高性能。但是我无法使用它打开一个模态,这让我发疯。我有一个页面(红色期刊),我在其中加载消息并显示它们(绿色消息项)。当用户单击它时,它会在如下所示的模式上打开完整的消息(蓝色的 MessageModal)。

在此处输入图像描述

我为每个模块创建了 3 个单独的模块。但是,尽管我将 MessageModal 添加到 message-item 模块,但在点击按钮 OPEN MESSAGE 后,我仍然收到以下错误:

未捕获(承诺):错误:未找到 MessageModal 的组件工厂。您是否将其添加到 @NgModule.entryComponents

所以我尝试将 ModalMessage 添加到 entryComponents 到每个模块/组件,但它仍然不起作用,我真的被卡住了。

JournalModule 应该需要导入 MessageModule 和 MessageModuleModule,并且 MessageModule 应该将 MessageModal 添加到其 entryComponents。请在下面找到代码:

日记模块.ts

一段日记.html

消息模块.ts

一段message.ts

消息模态模块.ts

我不知道我错在哪里..任何建议/文档表示赞赏!

0 投票
1 回答
4100 浏览

typescript - 从另一个模块导入服务

在使用 AngularJS 1.x 框架开发 2 年后,我目前正在学习 Angular 框架(第 5 版),所以我问了自己很多问题,其中一个是正确导入由另一个模块提供的服务的方法我的申请。

假设我有一个CoreModule提供MyService服务的示例,假设该项目具有以下文件树:

现在假设我的clients页面需要从模块中注入MyService服务。CoreModule为此,我将放入模块MyService的提供者列表中CoreModule。我将CoreModule在我的AppModule.

如果我很好理解,通过进行这样的导入,我会告诉我的应用程序MyService在模块的 .ts 文件中需要它时使用该服务AppModule

但我无法理解的是在我的应用程序代码中包含声明服务的 .ts 文件。事实上,如果我想使用该MyService服务,我会在Clients课堂上做类似的事情:

但是 TypeScript 需要引用声明服务的 .ts 文件。我的第一次尝试是按照文件树导入文件:

但这对我来说感觉不对,因为当我导入 Angular 服务时,我不必指定访问声明相关服务的文件的路径。服务示例HttpClient

实际上,我希望能够通过引用模块而不是传递 .ts 文件的路径来在我的应用程序页面中导入我的核心服务。

那时,我什至不知道这是否可能,或者我是否误解了其他模块中服务的使用。