问题标签 [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.
javascript - 将不同的父组件注入到子组件中
我试图解决以下情况:
我有一个将在多个父组件中使用的子组件,但是这个子组件需要能够访问父组件(即它在运行时的 parenComponent.constructor 信息)。
在这样的结构中
在父母之间共享此 ChildComponent 之前,我执行了以下操作
子组件代码
它奏效了。
但是当我尝试如下分享时:
在 childcomponent 的一个实例中,我得到了对其父级的正确引用,但在另一个实例中却没有(在我看来,它总是引用两者之一)
顺便说一句超级(父母);是什么使用 parentComponent.constructor 信息。
另外,我已经尝试在@Inject() 之前使用@Self() 和@Host,但无济于事。
对我如何做到这一点的任何帮助,以便只提供/注入孩子所在的父母。
先感谢您
angular - 如何以通用方式从模型访问 DI?
我有以下课程(仅相关部分):
所以基本上,这是一个简单的类型,但需要使用 Angular HttpService
。为此,我使用以下代码创建了一个文件:
我将它设置在我的构造函数中AppModule
:
最后,我在服务中使用它:
在一个组件中,我可以执行以下操作:
这很好用,但我想知道如何使它更通用。事实上,假设我想用这个类创建一个单独的 npm 包,我不能告诉用户创建setAppInjector
函数并将其注册到AppModule
(而且我什至不能从我的 npm 包中使用它......)。
所以我正在寻找一种 Angular 方法来使这个通用化,比如providers
在AppModule
.
任何想法?
angular - 使用接口的工厂方法的Angular2依赖注入
我正在尝试使用 Angular2 依赖注入,但收到以下错误消息:
错误 NG2003:没有适合类“PaymentService”的参数“服务”的注入令牌
app.module.ts - 带有工厂方法的提供者
payment.service.ts - 可注入的支付服务
payment.interface.ts、card-payment.ts、paypal-payment.ts文件
注意:如果我用其实现之一(PaymalPayment 或 CardPayment)替换 PaymentService 文件中的接口“Payment”,一切正常。但是那里有一个接口是很常见的情况。
- git 克隆https://github.com/karenmargaryan/di-via-interfaces-issue
- cd di-via-interfaces-issue
- npm 安装
- 服务
angular - 如何使用providin:角度9中的“平台”
我一直在阅读 angular 9 文档,它指出您可以使用 provideIn: 'platform' 在两个 Angular 应用程序之间共享单例服务,但我找不到一个好的示例,并且文档不清楚如何做。
假设我有一个带有 service1 的 application1 和一个带有 service2 的 application2,并且我想以某种方式从 service1 调用 service2 的方法。
我怎样才能打出那个“电话”?我应该以某种方式要求或将 application2 导入到 application1 中吗?
angular - Angular 8 将服务导入接口/模块
我有一个服务,在 config.serivce.ts 中称为 ConfigService,我需要获取一个返回值的函数(getClientID)并将该值导入模块文件:appAuth.module.ts
我需要知道如何在这样的文件中从服务函数中注入一个值?
例如在我的 appAuth.module.ts 中:
angular - 将主项目中的服务注入到创建的库中
我使用 Angular 8。
这个问题只针对 Angular DI 专家。
起初,我制作了一个 Angular 库,它将在许多项目中重用。
在这个库中,我做了一个抽象服务,必须在使用它的项目中定义。
我在名为 BridgeService 的库中定义了一个抽象类
在我的主项目中,我创建了实现它的 BridgeService:(在接下来的几行中,我将向您展示抽象的 BridgeService)
MainProject > BridgeService :
主项目 > 用户模块:
现在我们必须查看有关库的文件:
图书馆 > bridge.service.ts:
此 BridgeService 必须在 UsersModule 中定义
图书馆 > 用户模块:
我希望你只触摸这段代码中的两行:
1) 在库的 UsersModule 提供程序数组中:我想声明为通用抽象的 BridgeService 行。
2) 在项目的 UsersModule 提供者数组中:我要定义的 BridgeService 行来代替 Library UserModule 中的抽象。
angular - 在 Angular 中注销时重置服务
我的应用程序中有一些服务包含我想在用户注销时重置的数据。
我有一个仅在用户登录时显示的父组件,因此如果我将这些服务包含在该组件装饰器的提供程序数组中,则每次用户注销时,该组件都会被销毁,并且服务实例也会被删除. 如果另一个用户登录,这个父组件将使用新的服务实例再次创建,从而满足我的需求。
这很好用,但是如果我使用需要来自这些服务实例中的一个(或多个)数据的解析器,我将如何注入它们?也许我对重置这些服务数据的想法没有经过深思熟虑,应该使用替代方案,但我发现它非常干净和无缝,因为当我需要包含另一个具有需要在注销时重置数据的服务时,我只需将其添加到父组件提供程序数组中。
更新:在阅读了大量文档后,我最终了解了angular 中不同类型的分层注入器,因此我创建了一个更具体的新问题。我会留下这个以供参考。
angular - 如何指定角度服务注入策略?
我有如下服务:
我正在注入多个组件,如下所示。
但我想在每次路由更改时获取 BoxContainerService 的新实例。当我刷新页面时,会创建新的实例。但如果从 MyList_page 路由到 B_page 并再次路由 MyList_page,则 box$ 计数正在增加。我想在模块期间重新创建服务实例。因为我会在另一个模块中导入模块。
javascript - Angular 中的依赖注入组件
是否可以在 Angular 中以某种方式依赖注入组件?我希望能够做一些类似于你可以用服务做的事情,例如:
我曾尝试在包装组件中使用 *ngIf="condition",但它会抱怨没有为我不想使用的组件提供服务。