问题标签 [angular-dependency-injection]

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 投票
2 回答
51 浏览

angular - 执行服务中的方法时如何触发组件中的方法?

我有一个图表配置(使用 amCharts),其中为项目符号注册了一个 eventListener。此事件侦听器触发我的图表服务中的另一个函数。

我想在图表服务中的 eventListener 被触发后立即在我的组件中触发一个方法。我怎样才能最好地用 Angular 解决这个问题?

我的服务(chart.service.ts)如下所示:

我的组件中应该触发的方法(chart.component.ts):

0 投票
1 回答
799 浏览

angular - Angular:不同路线的依赖注入

我有一个 Angular 应用程序,它具有每个功能模块的架构。我有一个OrdersModule类似的组件ListOfOrdersDetailOfOrder或者EditOfOrder

所有这些组件都需要OrdersApiService在构造函数中,它基本上是一个简单的服务,它使用 REST API 后端通过 HTTPS 提供 CRUD 操作。

OrdersModule与一个名为Order的实体一起工作

我收到了一个功能请求,我将在其中实施新实体,称为Draft Order实际上, Draft OrderOrder之间没有区别(它们包含完全相同的属性,它们以相同的方式创建)但它们必须以不同的方式存储,它们具有不同的 API 端点(myApi.com/ordersvs myApi.com/draft-orders

最简单的方法(从花费时间的角度来看)是将订单复制/粘贴到新模块。但是,我很想避免代码重复,所以这种方法应该对我有用:

现在我需要根据路由向组件注入不同的服务。我知道解决方法

并在服务中使用ActivatedRoute:

有没有解决方案如何注入整个服务?

谢谢!

0 投票
1 回答
611 浏览

angular - 如何在 Angular 中的提供程序配置期间从 useFactory 函数进行 HTTP 调用?

我有下一个提供者配置

如何从 useFactory 函数(initializeKeycloak)进行 HTTP 调用?

我想从资产文件夹中获取这个值

0 投票
2 回答
1916 浏览

angular - 在 app.routing.module Angular 中使用服务

有没有办法在 Angular 路由模块的路由列表中注入和使用服务以动态更改路由数据?

像这样:

如何在路由数组中实现动态行为,例如设置自定义标题?

0 投票
1 回答
87 浏览

angular - 如何以角度提供和注入功能?

我有我需要在任何组件中注入的功能:

我需要注入它并使用:

怎么做?

我做了服务:

当我尝试在组件中使用此服务时,我得到以下信息:

0 投票
1 回答
377 浏览

angular - 如何将子类的指令注入组件

我有一个组件应该根据添加到元素的指令来改变其行为。此自定义逻辑在指令中定义,因此在添加新范围/功能时无需修改组件。

在组件构造函数中,我想注入应用于元素的指令。当我知道将使用的确切类时,我可以毫无问题地做到这一点,但我想要的是从 MyDirectiveBase 扩展的任何指令。

如何告诉 DI 框架允许 MyDirectiveBase 的所有子类?

我曾尝试使用注入令牌(multi=true),但这只是给了我一个类/函数数组,而不是元素实例。此外,如果未指定属性,则不应注入任何指令。

示例仓库: https ://github.com/ulvesked/angular-dependency-inject-directive-subclass-to-component

StackBlitz:https ://stackblitz.com/edit/angular-ivy-bihzjv?devtoolsheight=33&file=src/app/app.component.html

0 投票
1 回答
136 浏览

angular - 如何在Angular中注入具有构造函数参数的对象?

我非常喜欢 Angular,我想弄清楚如何将参数传递给正在注入组件的对象构造函数。

这是一个例子:

图像捕获.service.ts

图像扫描仪.component.ts

image-scanner. component我需要向注入的对象传递一些ImageCapture构造函数参数,一个是正在导入的 SDK 实例,第二个参数是我使用@ViewChild装饰器获取的 HTML DOM 元素。

我怎样才能做到这一点?

0 投票
2 回答
40 浏览

angular - 为什么要在 Angular 中设置依赖项提供程序?

我使用以下代码以 provideIn 作为根创建了一些有角度的服务。

这使得该服务可用于整个应用程序,我可以在任何我喜欢的地方导入它。这似乎很容易做到并且非常直观。但是我正在阅读 Angular 文档并遇到了Angular Dependency providers。我理解它背后的概念是仅将服务公开给那些需要它的组件。但是我不明白这个有什么用?我们可以在根级别提供服务并在需要时访问。配置依赖提供程序是否有任何优化好处,或者仅仅是因为安全原因或任何其他原因?

0 投票
1 回答
18 浏览

angular - 如何在 Angular 中使用 DI 为给定类提供实现?

考虑到我有 2 个模块,分别称为 A 和 B。

假设我有这门课。它并不真正“属于”任何模块,因为它是一个普通的旧 Typescript 类,而不是一个Injectable.

凉爽的。然后,假设模块 A 导出了一个注入Greeter实例的组件。

好的。现在假设模块 B 有一个扩展Greeter类的服务。模块 B 导入模块 A。

凉爽的。现在,每当我GreetingComponent在模块 B 中使用时,我都希望GentleGreeterService注入一个实例。但是,我根本没有得到任何实例,而是NullInjectorError: No provider for Greeter. 我怎样才能解决这个问题?

0 投票
0 回答
382 浏览

javascript - 如何在 Angular 运行时更改提供者 useValue?

我的应用程序的入口点就像www.mywebsite.com/context/token

我在 AppModule 中有一个提供程序,我将其用作所有 API 调用的基本路径:

我的要求是从 Angular 应用程序的入口 URL 中读取令牌并将其添加到提供程序值中,例如:'token/rest/apis'。

如何从条目 url 读取值并动态更新提供程序值?