如果我在模块中将服务声明为提供者,但没有在服务中使用 @Injectable 装饰器,会发生什么情况?
//Module
module({
controller: [catController],
provider: [catService]
})
//Service
//@Injectable()
export class catService{
}
Run Code Online (Sandbox Code Playgroud)
我认为令牌将被注册但不会被使用,并且每次都会共享新实例。我对么?
我在使用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) 我有个问题。在我的项目中,我有一些单例课程。
和$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)
我认为如果我扩展我的项目,我可能会遇到一些问题。
我正在尝试在我的项目中使用可注入,但是当我尝试这部分代码时:
@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)
不明白我错过了什么。
injectable ×4
flutter ×2
bloc ×1
dart ×1
decorator ×1
dependencies ×1
ionic2 ×1
javascript ×1
nestjs ×1
tabs ×1
variables ×1