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

javascript - 将不同的父组件注入到子组件中

我试图解决以下情况:

我有一个将在多个父组件中使用的子组件,但是这个子组件需要能够访问父组件(即它在运行时的 parenComponent.constructor 信息)。

在这样的结构中

在父母之间共享此 ChildComponent 之前,我执行了以下操作

子组件代码

它奏效了。

但是当我尝试如下分享时:

在 childcomponent 的一个实例中,我得到了对其父级的正确引用,但在另一个实例中却没有(在我看来,它总是引用两者之一)

顺便说一句超级(父母);是什么使用 parentComponent.constructor 信息。

另外,我已经尝试在@Inject() 之前使用@Self() 和@Host,但无济于事。

对我如何做到这一点的任何帮助,以便只提供/注入孩子所在的父母。

先感谢您

0 投票
0 回答
30 浏览

angular - 如何以通用方式从模型访问 DI?

我有以下课程(仅相关部分):

所以基本上,这是一个简单的类型,但需要使用 Angular HttpService。为此,我使用以下代码创建了一个文件:

我将它设置在我的构造函数中AppModule

最后,我在服务中使用它:

在一个组件中,我可以执行以下操作:

这很好用,但我想知道如何使它更通用。事实上,假设我想用这个类创建一个单独的 npm 包,我不能告诉用户创建setAppInjector函数并将其注册到AppModule(而且我什至不能从我的 npm 包中使用它......)。

所以我正在寻找一种 Angular 方法来使这个通用化,比如providersAppModule.

任何想法?

0 投票
1 回答
260 浏览

angular - 使用接口的工厂方法的Angular2依赖注入

我正在尝试使用 Angular2 依赖注入,但收到以下错误消息:

错误 NG2003:没有适合类“PaymentService”的参数“服务”的注入令牌

app.module.ts - 带有工厂方法的提供者

payment.service.ts - 可注入的支付服务

payment.interface.ts、card-payment.ts、paypal-payment.ts文件

注意:如果我用其实现之一(PaymalPayment 或 CardPayment)替换 PaymentService 文件中的接口“Payment”,一切正常。但是那里有一个接口是很常见的情况。

完整的源代码在这里

  1. git 克隆https://github.com/karenmargaryan/di-via-interfaces-issue
  2. cd di-via-interfaces-issue
  3. npm 安装
  4. 服务
0 投票
1 回答
647 浏览

angular - 如何使用providin:角度9中的“平台”

我一直在阅读 angular 9 文档,它指出您可以使用 provideIn: 'platform' 在两个 Angular 应用程序之间共享单例服务,但我找不到一个好的示例,并且文档不清楚如何做。

假设我有一个带有 service1 的 application1 和一个带有 service2 的 application2,并且我想以某种方式从 service1 调用 service2 的方法。

我怎样才能打出那个“电话”?我应该以某种方式要求或将 application2 导入到 application1 中吗?

0 投票
1 回答
5674 浏览

angular-unit-test - 使用动态组件的角度单元测试失败并出现错误 TypeError:无法读取未定义的属性“ɵcmp”

Angular 依赖项列表

dialogLayout.component.ts

dialogLayout.component.spec.ts

对话框.ref.ts

我的单元测试失败并出现错误TypeError: Cannot read property 'ɵcmp' of undefined

不知道这个错误是从哪里来的。已经花了 2 天时间在谷歌上搜索这个错误,但没有运气。请帮助解决问题。

在此处输入图像描述

提前致谢。

0 投票
1 回答
227 浏览

angular - Angular 8 将服务导入接口/模块

我有一个服务,在 config.serivce.ts 中称为 ConfigService,我需要获取一个返回值的函数(getClientID)并将该值导入模块文件:appAuth.module.ts

我需要知道如何在这样的文件中从服务函数中注入一个值?

例如在我的 appAuth.module.ts 中:

0 投票
1 回答
625 浏览

angular - 将主项目中的服务注入到创建的库中

我使用 Angular 8。

这个问题只针对 Angular DI 专家。

起初,我制作了一个 Angular 库,它将在许多项目中重用。

在这个库中,我做了一个抽象服务,必须在使用它的项目中定义。

我在名为 BridgeService 的库中定义了一个抽象类

在我的主项目中,我创建了实现它的 BridgeService:(在接下来的几行中,我将向您展示抽象的 BridgeService)

MainProject > BridgeService :

主项目 > 用户模块:

现在我们必须查看有关库的文件:

图书馆 > bridge.service.ts:

此 BridgeService 必须在 UsersModule 中定义

图书馆 > 用户模块:

我希望你只触摸这段代码中的两行:

1) 在库的 UsersModule 提供程序数组中:我想声明为通用抽象的 BridgeService 行。

2) 在项目的 UsersModule 提供者数组中:我要定义的 BridgeService 行来代替 Library UserModule 中的抽象。

0 投票
1 回答
440 浏览

angular - 在 Angular 中注销时重置服务

我的应用程序中有一些服务包含我想在用户注销时重置的数据。

我有一个仅在用户登录时显示的父组件,因此如果我将这些服务包含在该组件装饰器的提供程序数组中,则每次用户注销时,该组件都会被销毁,并且服务实例也会被删除. 如果另一个用户登录,这个父组件将使用新的服务实例再次创建,从而满足我的需求。

这很好用,但是如果我使用需要来自这些服务实例中的一个(或多个)数据的解析器,我将如何注入它们?也许我对重置这些服务数据的想法没有经过深思熟虑,应该使用替代方案,但我发现它非常干净和无缝,因为当我需要包含另一个具有需要在注销时重置数据的服务时,我只需将其添加到父组件提供程序数组中。

更新:在阅读了大量文档后,我最终了解了angular 中不同类型的分层注入器,因此我创建了一个更具体的新问题。我会留下这个以供参考。

0 投票
2 回答
70 浏览

angular - 如何指定角度服务注入策略?

我有如下服务:

我正在注入多个组件,如下所示。

但我想在每次路由更改时获取 BoxContainerService 的新实例。当我刷新页面时,会创建新的实例。但如果从 MyList_page 路由到 B_page 并再次路由 MyList_page,则 box$ 计数正在增加。我想在模块期间重新创建服务实例。因为我会在另一个模块中导入模块。

0 投票
2 回答
333 浏览

javascript - Angular 中的依赖注入组件

是否可以在 Angular 中以某种方式依赖注入组件?我希望能够做一些类似于你可以用服务做的事情,例如:

我曾尝试在包装组件中使用 *ngIf="condition",但它会抱怨没有为我不想使用的组件提供服务。