问题标签 [injectable]

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 回答
311 浏览

angularjs - DowngradeModule 和 downgradeInjectable 导致 Angular/AngularJS 混合应用程序中每个模块的单例服务,而不是全局单例

情况:

我正在开发一个以 AngularJS 为核心的混合项目,其中应用程序需要慢慢升级到 Angular 9。因此必须降级新的 Angular 模块才能访问 AngularJS。AngularJS 应用程序由多个模块和子模块组成。这里只是 core(shared) 模块和 app.module 用于简化:

core.ng2.module.ts

app.module.ts

目前的问题:

我根据官方指南降级并引导模块:https : //angular.io/api/upgrade/static/downgradeModule#downgrading-multiple-modules 让我的 app.module 作为我的 TranslateSyncService 的“根”。因为根据这个https://angular.io/guide/upgrade#how-ngupgrade-works单例服务在 AngularJS 和 Angular 之间共享,如果它们在“根”中提供。我需要 translate-sync-service 来将 Angular 组件的状态与 AngularJS 应用程序同步。

我降级了模块和服务,使其可以在 AngularJS 中访问。问题是服务正在工作,但每个模块都有自己的服务实例,而不是全局单例服务。所以核心模块有自己的服务和我创建的每个其他模块。

tldr; 我最终得到每个模块的单例服务,而不是全局服务。

我的愿望:我想要一个 Angular 服务,它是跨降级的 Angular 模块和 AngularJS 应用程序的单例。

有人有这个问题的经验吗?

0 投票
2 回答
3006 浏览

flutter - 如何在颤振中使用可注入和 get_it 的共享偏好?

我在flutter中使用injectable和get_it包我有一个共享的偏好类:

此类注入为LazySingleton,我有一个用于注入共享首选项的模块:

在使用 SharedPref 类的 bloc 类中:

当我将 LoginCheckBloc 与 getIt<> 一起使用时,我在注入共享偏好时出现错误:

错误信息是:

如何使用可注射的共享偏好?

0 投票
1 回答
368 浏览

dependencies - 在 Nestjs 中,如果服务中未提及 Injectable 但服务在每个模块中注册为提供者,那么 DI 将如何工作

如果我在模块中将服务声明为提供者但没有在服务中使用 @Injectable 装饰器,会发生什么?

我认为令牌将被注册但不会被使用,并且每次都会共享新实例。我对么?

0 投票
3 回答
483 浏览

angular - 导入 Injectables 和 Angular 服务

我正在学习 Angular 中的 Injectables 和 Services,但我不清楚有关注射器的某些导入和默认特性。具体来说,什么时候应该在 Angular 中提供服务:

  1. 有@Injectables 标签吗?我看过一篇没有使用它的博文。当您将其忽略时会发生什么?忽略此标记将如何改变服务的行为方式?

  2. 在 app.module 的 providers 数组中声明?

  3. 在单个组件的 providers 数组中声明,而不是在 app.module 中声明?

  4. 使用 @Injectables 标签时,providedIn 关键字的默认值是多少?如果您的服务中未定义此关键字,那么应该假设关键字的值和服务的范围是什么?

  5. 假设我有一个具有这些特征的服务(我们称之为DummyService):具有@Injectables 标记,未定义提供的输入,未在任何提供程序数组中声明(既不是 app.module 也不是任何单个组件)。

    • 5.a) 由于providedIn 未指定且服务未在任何providers 数组中声明,该服务是否可以与兄弟组件共享?
    • 5.b) 从导入 DummyService 的组件调用 DummyService 时,与这些用例有什么区别:

对比

0 投票
0 回答
791 浏览

unit-testing - 使用 DI (injectable-getIt) 进行颤振测试的正确方法?

从在 lib(dev) 代码中初始化的 getIt 中获取实例是否可以,或者我应该使用其他方式,还是使用其他 DI 设置进行测试?

请参考以下代码:

CoreInjector 代码

TravellerProfileViewModel 依赖于 Service,该 Service 通过相同的 CoreInjector 在后台注入。

也可以进行构造函数注入,还是应该将构造函数参数设为可选?在以下两种方法中,更好的方法是什么?

可注入的生成代码:

或者

可注入的生成代码:

0 投票
1 回答
44 浏览

flutter - 你应该注入一个接口还是它的实现?

我应该注入一个接口还是它的实现?

我在教程中遇到了下面的代码,我想知道为什么要注入接口但是当你可以直接注入它的实现时将它注册为它的实现?

登录块

FIREBASEAUTH

注射配置

0 投票
3 回答
1589 浏览

angular - “无法解析服务的所有参数:(?)”当我尝试在 Angular 10 中使用库中的服务时

在我的图书馆中,我使用以下代码提供服务:

data-injector.module现有原因只是避免循环依赖):

在我的库的主模块文件中:

最后在我的应用程序中app.module.ts

构建顺利,但在浏览器中我收到此错误:

我在 StackOverflow 中检查了关于这个主题的几个问题,就像这样,但几乎在所有地方都只是@Injectable()缺少的部分,但在这种情况下,我使用了这个装饰器。

知道如何解决这个问题吗?

0 投票
1 回答
42 浏览

angular - 如何使用服务创建自定义表单验证器?

我为自定义表单验证器创建了一个可注入服务:

然后我在我的控制器中这样调用它:

它有效,但我觉得这不是一个好方法。有没有更好更简洁的方法来实现这一目标?

0 投票
1 回答
230 浏览

flutter - 有没有办法通过工厂参数?

我有类似的东西:

当我从我的代码中调用它时,我传递了工厂参数,例如:getIt<SettingsBloc>(param1: Event())

但是当 SettingsBloc 是某些东西的依赖项时,调用是自动生成的,看起来像这样:get<SettingsBloc>()

生成的代码:

所以,工厂参数没有通过,一切都在运行时崩溃。我怎样才能解决这个问题?

PS 长话短说:应该有一种方法可以生成此代码:

而不是这个:

0 投票
1 回答
844 浏览

flutter - 具有共享偏好的 Flutter 依赖注入

晚上好,我正在尝试将依赖注入与共享首选项插件一起使用,但是一旦我生成代码,我就会收到一个不相关 Bloc 的错误。我用

  • 获取:^0.5.3,
  • 可注射发生器:1.0.6
  • 颤振块:^6.1.1。

我的目标是将 SharedPreferences 注入到一个类中以处理本地操作,它看起来像这样:

为了正确注入 SharedPreferences,我遵循了它的官方文档(https://pub.dev/packages/injectable#registering-asynchronous-injectables),因此我注入第 3 方模块的代码如下所示:

我在 StackOverflow 上关注了这个问题,但它没有用。我的错误如下:

自动生成的注入代码如下所示: