标签: injectable

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

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

//Module
module({
controller: [catController],
provider: [catService]
})

//Service
//@Injectable()
export class catService{
}
Run Code Online (Sandbox Code Playgroud)

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

dependencies decorator code-injection injectable nestjs

3
推荐指数
1
解决办法
926
查看次数

全局变量Ionic 2

我在使用Ionic 2和设置全局变量方面遇到了一些困难.我的应用程序的结构如下:

Main app
  |
  |--- Page1 (Info)
  |--- Page2 (Map)
  |--- Page3 (List)
         |
         |--- ItemTabsPage
                |
                |---tab1
                |---tab2
                |---tab3
Run Code Online (Sandbox Code Playgroud)

我的目的是在Page3中显示一个列表,并在选择一个项目后,在选项卡中显示其他信息.

我使用以下标签将信息从第3页发送到页面:

itemTapped(event, item) {
    this.nav.push(ItemTabsPage, {
      item: item
    });
  }
Run Code Online (Sandbox Code Playgroud)

问题是我无法将信息发送到子选项卡.我想根据选择的项目显示不同的信息.我已经尝试定义一个可注入的globalVars.js来将值存储在一个变量中:

import {Injectable} from 'angular2/core';

@Injectable()
export class GlobalVars {

  constructor(myGlobalVar) {
    this.myGlobalVar = "";
  }

  setMyGlobalVar(value) {
    this.myGlobalVar = value;
  }

  getMyGlobalVar() {
    return this.myGlobalVar;
  }

}
Run Code Online (Sandbox Code Playgroud)

然后更新列表中itemTapped的代码,如下所示:

itemTapped(event, item) {
        this.nav.push(ItemTabsPage, {
          item: item
        });
        this.globalVars.setMyGlobalVar(item);
      }
Run Code Online (Sandbox Code Playgroud)

但是,我总是得到同样的错误:

Uncaught EXCEPTION: Error during …
Run Code Online (Sandbox Code Playgroud)

javascript variables tabs injectable ionic2

1
推荐指数
2
解决办法
1万
查看次数

可注入、get_it Flutter 的性能

我有个问题。在我的项目中,我有一些单例课程。

  • DioMethod(一些 api 配置),
  • 存储库(连接ApiProvider和 BLoc 类),
  • ApiProvider(调用 api => 获取数据 => 传递到Repository),
  • 一些 BloC 类,例如MoviesBlocMovieDetailBloc 等我为每个 Screen 创建了一个 BLoC 类

$initGetIt处的初始化相同。

_i1.GetIt $initGetIt(_i1.GetIt get,
    {String? environment, _i2.EnvironmentFilter? environmentFilter}) {
  final gh = _i2.GetItHelper(get, environment, environmentFilter);
  gh.singleton<_i3.DioConfig>(_i3.DioConfig());
  gh.singleton<_i4.DioMethod>(_i4.DioMethod(get<_i3.DioConfig>()));
  gh.singleton<_i5.MovieApiProvider>(
      _i5.MovieApiProvider(get<_i4.DioMethod>()));
  gh.singleton<_i6.Repository>(_i6.Repository());
  gh.lazySingleton<_i7.MovieDetailBloc>(
      () => _i7.MovieDetailBloc(get<_i6.Repository>()),
      dispose: (i) => i.dispose());
  gh.lazySingleton<_i8.MoviesBloc>(() => _i8.MoviesBloc(get<_i6.Repository>()),
      dispose: (i) => i.dispose());
  return get;
}
Run Code Online (Sandbox Code Playgroud)

我认为如果我扩展我的项目,我可能会遇到一些问题。

  1. 这个函数太大了,我们有太多的单例仍然存在于应用程序中。
  2. 打开app时我们需要初始化很多Object => …

injectable dart flutter bloc

1
推荐指数
1
解决办法
797
查看次数

Flutter 可注入抽象类

我正在尝试在我的项目中使用可注入,但是当我尝试这部分代码时:

@injectable
abstract class TodoRepository {
  Future<Either<Failure, DayTodosEntity>> getDayDodo(DateEntity date);
}  
Run Code Online (Sandbox Code Playgroud)

run build_runner出现此错误后:

[TodoRepository] is abstract and can not be registered directly! 
if it has a factory or a create method annotate it with @factoryMethod
Run Code Online (Sandbox Code Playgroud)

不明白我错过了什么。

dependency-injection injectable flutter

0
推荐指数
1
解决办法
1759
查看次数