问题标签 [angular2-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 投票
1 回答
531 浏览

angular - Angular 2 Undefined on Injected Service

我有一个 Angular 2 组件,它实现了接口 IDatasource 作为 AG-GRID 的一部分

我无法从 dataSource getRows 函数中获取注入的 httpClient 服务。

我假设这与我不理解的注射有关;但我无法理解为什么。

还尝试将其定义为单独的属性并得到完全相同的问题。

0 投票
0 回答
76 浏览

angular - 当我在构造函数中使用参数覆盖提供程序时如何添加注入?

我正在RequestOptions通过执行以下操作来覆盖我的应用程序:

之后:

现在我想在我的孩子-RequestOptionsService中注入另一个服务,但问题是RequestOptions中有参数(不是依赖注入):

在此处输入图像描述

它将如何反映到我的 RequestOptionsService 孩子?

0 投票
0 回答
1205 浏览

angular - angular2:注入通用服务?

将通用服务注入组件的推荐方法是什么?例如,假设你有这个:

现在,假设我们还有一个名为 Person 的类:

我想将它注入一个组件中:

我想知道是否有办法具体说明提供者类型。目前,由于模板没有转换成 JavaScript,我只是简单地传递 Service。

编辑:我正在尝试提供有关我的方案的更多信息。

假设您有两条不同的路线,映射到 2 个不同的组件中。让我们称它们为 A 和 B。现在,假设这些组件中的每一个都有一个用于加载不同组件的内部辅助路由器出口。可以这么说:

一个


C | 出线口:可装D或E


F | 出线口:可装G或H

现在,假设当 D 或 E 加载类型为 Person 的对象时需要通知 A,而当 G 或 H 加载类型为 Car 的对象时需要通知 B。为了实现这一点,我使用了一个注入父组件和子组件的服务(我按照官方文档中的说明进行操作)。我考虑过使用泛型来指定要加载的对象的类型。这两种情况的代码是相同的,但是在一个地方,内部组件加载 Person 对象,而在另一个地方,内部组件加载 Car 对象。

当然,我可以只使用对象,但由于 TypeScript 支持泛型,我认为我应该使用它以获得更好的智能感知和更多的“类型安全”。

谢谢。

问候,路易斯

0 投票
1 回答
685 浏览

angular - 如何让 Angular 2 表单看到注入的表单控件?

我动态地将带有表单控件的组件(使用@ViewChild 和insert())注入到一个用表单标签包装它的组件中(这样我就可以拥有许多具有相同表单处理的不同表单模板)。

这一切都很好,但是现在当我检查 form.valid 时,它总是有效的,因为显然,它看不到动态注入的表单控件。

我能否以某种方式触发表单上 ngForm 指令的“重新初始化”,以便它知道注入了其他表单控件?

注意:我现在确实意识到这个问题的更好解决方案可能是使用模型驱动的表单,但是现在重做整个事情的时间太短了。

父模板:

子模板 例如

0 投票
2 回答
3100 浏览

angular - Angular 2 DI:将输入绑定传递给工厂提供者的部门

有没有一种简单的方法可以将输入绑定注入到提供者工厂的 deps 数组中?下面显然不起作用。

0 投票
0 回答
3493 浏览

angular - Angular 2 必须使用 @Inject(forwardRef(...)) 来注入 Service

我的应用程序中的一项服务存在问题。问题是,无论在何处注入此服务,我都会收到以下错误:

我知道这个问题可能是由于使用了桶而引起的,但是我没有将桶用于服务,而是“直接”引用文件,例如:../../core/services/config.service.

正如this answer中所建议的,我尝试@Inject(forwardRef(...))在注入此服务的任何地方使用。我唯一的例外是AppComponent在这种情况下我“正常”注入相同的服务并且我没有收到错误:

在所有其他地方,如果我不执行以下操作,则会收到上述错误:

我的理解forwardRef()是在要注入但尚未定义的依赖项时使用。ConfigService是从CoreModule中导入的a提供的AppModule。组件在我拥有的 aSharedModule或 aFeatureModule中。

不确定是否有人可以阐明为什么此特定服务需要forwardRef在任何组件中(除AppComponent),而以相同方式导入和提供的所有其他服务都以“正常方式”注入。

更新

以下是提供服务的方式:

核心模块

应用模块

ConfigService是从那里提供的,CoreModule没有其他地方提供。也CoreModule仅在AppModule. 这个想法是从单个模块提供服务。该服务用于在其他模块(SharedModule和 a FeatureModule)中声明的组件中。

0 投票
1 回答
510 浏览

angular - Angular2组件之间的通信

我使用Angular2搜索组件之间的通信我尝试在这种模式下但不起作用

模板 variantpages.component.html 内容

所以控制台日志显示增量数,但 pageCount 保持为 0

谢谢

0 投票
0 回答
201 浏览

angular2-components - 如何将 Angular2 组件渲染到特定的动态加载的 DOM 元素中?

我有一个使用 jQuery 动态加载和创建视频播放器的组件。完成后,它看起来像这样:

我想在这个播放器上动态渲染和注入一个角度组件作为图层。

所以我有这段代码

TheviewContainerRef持有对 which 的引用,<div id="1613544e-3695-06ed-7201-9cbbe3ded44b" style="z-index: 1;"> 它是整个事物的父级。

问题是,我必须在下面注入覆盖组件 elite_vp_videoPlayer

我怎样才能做到这一点?我一直在四处寻找。

将 Angular2 组件注入到特定的 DOM 位置(通过类\ID)

谢谢你们!

0 投票
1 回答
1022 浏览

angular - 带有依赖注入的Angular 2自定义管道

假设我像这样创建一个管道:

然后将其注入具有以下内容的组件中:

并用于:

在转换函数中失败了:

在转换函数中添加调试器显示this为未定义。

为什么?我该如何解决这个问题?

0 投票
1 回答
788 浏览

angular - Angular 2/4 Injectable 中函数的单独文件

我正在编写一个可能会呈指数增长的服务,我希望能够编写单独的文件并将它们加载到组件使用的 @Injectable 中。通常我会编写多个服务并将每个服务注入到组件中,但是我的组件已经相当庞大,我觉得如果我可以加载一个服务并处理其中的所有功能,维护起来会更容易一项服务。我希望我只是没有用谷歌搜索正确的东西,这就像导入一样简单。

一般的想法是这样的:

-configfns1.ts

-configfns2.ts(包含多个我希望作为 config.service 提供的 ts 函数)

-config.service.ts

-config-view.component.ts

这种方法可行吗?还是我只需要继续为每个服务创建单独的服务,然后将每个服务导入到我的组件中?