如何在两个模块之间共享服务 - @NgModule 以角度而不是在组件之间?

2024-04-13

在我的应用程序中,我有两个不同的引导模块(@NgModule)在一个应用程序中独立运行。没有一个角度应用程序位独立的引导模块,现在我希望它们应该相互通信并共享数据。

我知道通过@Injectable服务作为模块中的提供者,我可以在所有组件中共享数据@NgModule但我将如何在两个不同的模块(不是模块内的组件)之间共享数据。

有没有一种方法可以在另一个模块中访问一个服务对象?有没有办法可以访问浏览器内存中可用的 Service 对象并在我的其他角度模块中使用它?


根据 Angular 2 的最终版本,模块提供的服务可供导入该模块的所有其他模块使用。 这官方风格指南 https://angular.io/docs/ts/latest/guide/style-guide.html#!#app-structure-and-angular-modules建议应由某些人提供将在应用程序中的任何位置重用的应用程序范围服务(单例)Core Module,即要在main中导入App Module所以它可以注射到任何地方。

如果您不使用涉及具有共享单例的核心模块的结构,并且您正在独立开发两个 NgModule,并且希望其中一个中的服务在另一个中使用,那么唯一的解决方案是将提供程序导入到另一个 :

这是提供者模块:

/// some.module.ts
import { NgModule } from '@angular/core';

import { SomeComponent }   from './some.component';

@NgModule({
    imports: [],
    exports: [],
    declarations: [SomeComponent],
    providers: [ MyService ], // <======================= PROVIDE THE SERVICE
})
export class SomeModule { }

这是想要使用的另一个模块MyService

/// some-other.module.ts
import { NgModule } from '@angular/core';

import { SomeModule } from 'path/to/some.module'; // <=== IMPORT THE JSMODULE

import { SomeOtherComponent }   from './some.other.component';

@NgModule({
    imports: [ SomeModule ], // <======================== IMPORT THE NG MODULE
    exports: [],
    declarations: [SomeOtherComponent],
    providers: [],
})
export class SomeOtherModule { }

这样,服务应该可以注入到任何组件中SomeOtherModule声明,并在 SomeModule 本身中 - 只需在构造函数中请求它:

/// some-other.module.ts

import { MyService } from 'path/to/some.module/my-service';

/* ...
    rest of the module
*/

export class SomeOtherModule {
    constructor( private _myService: MyService) { <====== INJECT THE SERVICE
        this._myService.dosmth();
    }
}

如果这不能回答您的问题,我邀请您重新制定它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在两个模块之间共享服务 - @NgModule 以角度而不是在组件之间? 的相关文章

  • 显示在 Angular 5 中作为 Blob 对象接收的图像

    我正在开发一个 MEAN Stack 应用程序 我想做的是显示存储在数据库中的图像 这样后端就可以工作 但我真正的问题是在前端Angular所以我这样做了 首先从后端接收图像 我做了一个服务来做到这一点 Function to get us
  • Angular2 与 Jquery-ui 滑块

    我尝试将 Jquery ui 滑块与 angular2 一起使用 我想让变量 slideValue 显示滑块的值 但我不知道如何将我的模型或变量从角度绑定到滑块 这是我的滑块组件 import Component ElementRef In
  • 修剪日期格式 PrimeNG 日历 - 删除时间戳、角度反应形式

    我将以下内容推入我的反应形式 obj 中2016 01 01T00 00 00 000Z但我想要以下2016 01 01 有谁知道有一个内置函数可以实现上述目的 我已经搜索过文档here https www primefaces org p
  • Windows 10 中的 npm 安装错误( npm install -g angular-cli )

    node v v4 5 0 npm v 5 0 1 有人在 Windows 10 中安装 angular cli 时遇到过这种问题吗 请尝试以下操作 step 0 运行这个命令 npm uninstall g angular cli npm
  • 使用 Nginx 在 Docker 容器内部署带有路由器的 Angular2

    我正在尝试部署一个使用框架的路由器功能的 Angular 2 但在 docker 容器内使用 nginx 为其提供服务时遇到一些问题 由 angular cli 构建的 Angular 应用程序具有如下文件结构 dist 08c42df75
  • 如何转义角度 HttpParams?

    在 Angular 服务中 我使用 HttpParams 将字符串发送到服务 get phone string Observable
  • 将 Angular Web 组件 EventEmitter 监听到 javascript

    我在以下工具的帮助下创建了一个小型网络组件本文 https medium com IMM9O web components with angular d0205c9db08f使用角度元素 其中包括 Input and Output 我能够将
  • Angular 以什么方式解决重复的指令/组件选择器?

    如果我包含两个模块 它们都使用相同的选择器定义组件或指令 可以说a routerLink ModuleA 使用选择器定义指令a routerLink ModuleB 使用选择器定义指令a routerLink AppModule 包括模块和
  • 观众:覆盖单个测试的提供者(角度通用)

    我构建了一个小型角度应用程序 现在正在编写单元测试 到目前为止一切顺利 但是当我尝试测试我的 authGuard 时 我遇到了一些问题 我在用观众 https github com ngneat spectator 我在规范的提供者部分中提
  • 原生元素聚焦功能不起作用

    我试图通过单击按钮自动聚焦在输入元素上 请参阅打字稿 ViewChild envFilter envFilter ElementRef onFilterSelect this envFilter nativeElement focus 在
  • Angular 2 获取当前路线

    所以我需要以某种方式检查我是否在主页上执行某些操作 而在其他页面上则不执行此操作 该组件也在所有页面上导入 如果我在主页上 如何检测该组件 Thanks 尝试这个 import Router from angular router expo
  • 设置 Angular 2 http 请求的基本 url

    我正在尝试为所有 Angular 2 http 请求设置基本 url 以下是我的应用程序的基本设置 class HttpOptions extends BaseRequestOptions url string http 10 7 18 2
  • 如何判断何时创建新组件?

    我一直在寻找背后的逻辑当有人在 AngularJS Angular 上的 Web 应用程序中创建新组件时但我认为这更通用 可能适用于所有基于组件的前端框架 我知道有像这样的一些原则应该是抽象的和可重用的但例如我在角度文档中看到 每个单独的路
  • Angular 2可以通过路由参数传递对象吗?

    我可以使用一些建议来解决我面临的这个问题 为了尽可能地向您解释这一点 我创建了一个主要组件 Component selector main component providers FORM PROVIDERS MainService Mai
  • 可从 Angular2 中的

    使用 Angular 2 从按钮的 onclick 事件创建可观察对象的首选方法是什么 我不确定从组件代码中的 DOM 获取本机元素是否被认为是最佳实践 我该怎么做 或者是否还有其他我不知道的快捷方式 别想太多 ViewChild butt
  • 在业力测试中按类名获取两个div(Angular 4.0)

    我有这样的看法 div div class header title Example title 1 div div div div class header title Example title 2 div div 在我的业力测试中 我
  • 当应用程序位于前台时,Angular 8 firebase 推送通知不起作用

    我正在按照此文档在我的 Angular Web 应用程序上实现 FCM 当我发送通知时 当应用程序未处于活动状态时 它会成功接收 接收后台通知 但如果应用程序处于活动状态 我就不会收到通知 请按照下列步骤操作 https dev to ma
  • Ionic 2 http.get() 问题

    我试着做一个http get 用这两个方法调用 First getResults return this http get http localhost api php toPromise then data gt data json 显示
  • 模块解析失败:意外的标记 (4:0)

    我正在尝试将 FULLCALENDAR 添加到我的 Angular v14 项目中 但在所有设置之后我突然面临这个错误 知道如何处理这个错误吗 包 json fullcalendar angular 5 11 0 fullcalendar
  • 如何在 Angular 4 中的 HTML 中包含或排除属性

    我正在使用 Angular 4 和 Angular 材料来构建一张桌子 我想要mat sort header有条件地添加到以下模板中

随机推荐

  • Postgis - 如何通过 JDBC 使用数据类型“地理”

    从事一个网络项目 该项目使用postgresql 9 3 postgis 2 1 有一个类型的列geography在表中 它只存储一个point 现在我需要通过 JDBC 使用 Java 对象插入 选择类型 看完之后postgis手册 没有
  • 手动身份验证检查 Symfony 2

    我正在开发一个 Symfony 2 应用程序 用户必须在登录过程中选择一个配置文件 用户可能有多个配置文件可供使用 并且他们只知道自己的配置文件 因此 首先 我需要提示输入用户名和密码 如果这些正确 我不应该登录用户 我需要提示用户在会话期
  • NodeJs 中单线程和非阻塞 I/O 操作有什么区别?

    我一直在阅读并浏览尽可能多的 NodeJs 代码 但我对此有点困惑 Node 单线程和非阻塞 I O 到底意味着什么 我可以通过生成子进程来实现第一个 通过使用异步库来实现第二个 但我想弄清楚它的含义以及非阻塞 I O 如何仍然会减慢您的应
  • 创建产品 SDK:如何使用我正在创建的 SDK 添加本机库 (.so) 和 jar?

    我正在创建一个小部件 我们将提供给开发人员最终用户 它由 jar和一个本机库 so 使用 NDK 构建 JAR 有一个动态库的 JNI 接口 关于如何包含外部内容非常清楚 jar在项目中但没有如何包含依赖的动态库 我如何打包并构建 jar
  • EF Core 3 - 在Where子句中使用字符串的扩展方法

    我有一个简单的字符串扩展方法 public static class FrenchStringExtensions public static string ReplaceAccents this string str return str
  • Rails 3.1 Asset Pipeline 和 Uglifier 中可能存在的错误

    我在 Heroku 上部署时遇到了问题 导致 rake 任务失败 rake assets precompile 底部是集成时出现的错误 轨道3 1 Jquery 日历 https github com themouette jquery w
  • React 自定义挂钩内的 Apollo GraphQL 查询

    我正在尝试列出 Rick Morty API 中的所有角色 我编写了以下钩子以在我的组件中使用 该组件将呈现结果 当我对值进行硬编码时 例如 page 1 filter name Rick 查询运行得很好 如果我尝试使用变量 它会返回错误
  • 使用 WCF 使用 RESTful JSON API

    我是 WCF 的新手 而且一般对 NET 很生疏 所以很可能这是一个已回答的问题 但我只是错过了它 我正在构建一个 ASP NET MVC 应用程序 它将使用基于 RESTful JSON 的 API 作为后端 我一直在研究如何与 NET
  • 具有特定基数的映射(联结)表之间的联接

    我有一个关于执行特定联接的最有效方法的简单问题 就拿这三张表来说 为了保护无辜 已经改了实名 表 动物 animal id name 1 bunny 2 bear 3 cat 4 mouse 表 标签 tag id tag 1 fluffy
  • 将应用程序见解跟踪日志记录添加到 .net core 控制台应用程序

    我有一个 net core 控制台应用程序 不是 AspNetCore 我想添加应用程序见解日志记录 将跟踪日志推送到应用程序见解 我尝试过使用 Microsoft ApplicationInsights AspNetCore 但是当我这样
  • 释放对执行进程任务中使用的变量的锁定SSIS

    我有一个包裹Foreach容器 and 执行流程任务 inside 对于每个容器 在执行流程任务中出现一些错误时 它会重定向到OnError事件处理程序对于每个容器 我正在使用 exe 捕获错误标准误差变量任务的属性并在脚本任务中使用它On
  • 在 Python 中读取和/或更改 Windows 8 主卷 [重复]

    这个问题在这里已经有答案了 如何使用 python 更改笔记本电脑上的主音量 我知道一种方法 我使用 ctypes 模拟音量增大 音量减小按键 但在不知道当前音量的情况下 每当我启动应用程序进行校准时 我都必须让代码执行 50 次连续的音量
  • 将数据集转换为 XML

    我已经被这个问题困扰了几个小时 似乎无法弄清楚 所以我在这里问 好吧 我有这个功能 private void XmlDump XDocument doc new XDocument new XDeclaration 1 0 utf 8 ye
  • git 推送错误:src refspec main 与 Linux 上的任何内容都不匹配

    每当我尝试使用上传文件时git push u origin main我收到错误如下 error src refspec main does not match any error failed to push some refs to gi
  • 邮递员 Windows 身份验证 (NTLM) 不起作用

    我已经从 Visual Studio 模板创建了一个全新的 WebAPI 项目 目标框架netcoreapp3 1 我已经配置了窗口身份验证 我在 Postman 中使用 NTLM 配置创建了一个请求来调用我的 API 当我调试应用程序并通
  • 如何从字符串中删除特定字符(仅当它是字符串中的第一个或最后一个字符时)。

    假设我有一个字符串1 2 3 我想删除最后一个 或者如果字符串看起来像 1 2 3 or 1 2 3我还是想得到1 2 3作为我的结果 请尝试在您的回答中进行一些解释 我不想只是在不理解的情况下复制粘贴内容 谢谢 处理这样的 修剪 逗号的一
  • 在bash中,如何使用一个变量作为另一个变量名称的一部分?

    只是一个简单的问题 我有一些数组 array 0 1 2 3 array 1 1 2 3 我有一个变量a a 0 echo array a 0 出现严重替换错误 有谁知道正确的语法吗 您可以做的一件事是使用以下语法 array a arra
  • Windows Vista 中%allusersprofile% 文件夹的位置?

    Windows Vista 中 allusersprofile 文件夹的确切路径是什么 在某些系统上 我看到该文件夹 为 c Users All Users 在某些系统上它被映射到 C ProgramData 而在其他系统上它被映射到 C
  • Rails ActiveRecord 协会

    好的 这是我的问题 我有 3 个不同的模型 人员 角色 客户和商店 客户有很多商店 也可以有很多人 商店里人很多 人们有各种各样的角色 1 人可以在多个商店工作 并且他们在每个商店可能具有不同的角色 例如 乔可能是一家商店的助理经理和另一家
  • 如何在两个模块之间共享服务 - @NgModule 以角度而不是在组件之间?

    在我的应用程序中 我有两个不同的引导模块 NgModule 在一个应用程序中独立运行 没有一个角度应用程序位独立的引导模块 现在我希望它们应该相互通信并共享数据 我知道通过 Injectable服务作为模块中的提供者 我可以在所有组件中共享