AngularDart 依赖注入
AngularDart Dependency Injection
我正在使用 AngularDart,但我不知道如何注入我的入口点依赖项。
Main.dart:
import 'package:angular/angular.dart';
import 'package:angular_dart/app_component.dart';
import 'package:angular_dart/app_component.template.dart' as ng;
@GenerateInjector(const [
const Provider(MyRepository, useClass: ng.MyRepositoryImpl),
])
final InjectorFactory appInjector = ng.appInjector$Injector;
void main() {
runApp(ng.AppComponentNgFactory, createInjector: appInjector);
}
app_component.dart
import 'package:angular/angular.dart';
@Component(
selector: 'app-component',
templateUrl: 'app_component.html',
providers: [ClassProvider(MyRepository)]
)
class AppComponent {
MyRepository myRepository; //This is not getting injected
}
abstract class MyRepository {
}
class MyRepositoryImpl implements MyRepository {
}
我的问题是关于 runApp 方法和 ng.AppComponentNgFactory。我没有看到注入是如何解决的。
提前致谢,
编辑: 我正在寻找的是如何告诉编译器生成如下一行:
new AppComponent(new MyRepositoryImpl);
并喜欢
消费它
class AppComponent{
final MyRepository _repo;
AppComponent(MyRepository repo) {
this._repo = repo;
}
}
在 app_component
中使用 [ClassProvider(MyRepository)]
告诉编译器覆盖您在 main.dart
文件中设置的内容。
试试这个:
@Component(
selector: 'app-component',
templateUrl: 'app_component.html',
)
@Injectable()
class AppComponent {
final MyRepository _myRepository;
AppComponent(this._myRepository);
}
编辑:
您的 main.dart 文件不正确,您必须从 main.template.dart 引用注入器:
import 'package:angular/angular.dart';
import 'package:angular_dart/app_component.dart';
import 'package:angular_dart/app_component.template.dart' as ng;
import 'main.template.dart' as self;
@GenerateInjector([
ClassProvider(MyRepository, useClass: ng.MyRepositoryImpl),
])
final InjectorFactory injector = self.injector$Injector;
void main() {
runApp(ng.AppComponentNgFactory, createInjector: injector);
}
我正在使用 AngularDart,但我不知道如何注入我的入口点依赖项。
Main.dart:
import 'package:angular/angular.dart';
import 'package:angular_dart/app_component.dart';
import 'package:angular_dart/app_component.template.dart' as ng;
@GenerateInjector(const [
const Provider(MyRepository, useClass: ng.MyRepositoryImpl),
])
final InjectorFactory appInjector = ng.appInjector$Injector;
void main() {
runApp(ng.AppComponentNgFactory, createInjector: appInjector);
}
app_component.dart
import 'package:angular/angular.dart';
@Component(
selector: 'app-component',
templateUrl: 'app_component.html',
providers: [ClassProvider(MyRepository)]
)
class AppComponent {
MyRepository myRepository; //This is not getting injected
}
abstract class MyRepository {
}
class MyRepositoryImpl implements MyRepository {
}
我的问题是关于 runApp 方法和 ng.AppComponentNgFactory。我没有看到注入是如何解决的。
提前致谢,
编辑: 我正在寻找的是如何告诉编译器生成如下一行:
new AppComponent(new MyRepositoryImpl);
并喜欢
消费它class AppComponent{
final MyRepository _repo;
AppComponent(MyRepository repo) {
this._repo = repo;
}
}
在 app_component
中使用 [ClassProvider(MyRepository)]
告诉编译器覆盖您在 main.dart
文件中设置的内容。
试试这个:
@Component(
selector: 'app-component',
templateUrl: 'app_component.html',
)
@Injectable()
class AppComponent {
final MyRepository _myRepository;
AppComponent(this._myRepository);
}
编辑:
您的 main.dart 文件不正确,您必须从 main.template.dart 引用注入器:
import 'package:angular/angular.dart';
import 'package:angular_dart/app_component.dart';
import 'package:angular_dart/app_component.template.dart' as ng;
import 'main.template.dart' as self;
@GenerateInjector([
ClassProvider(MyRepository, useClass: ng.MyRepositoryImpl),
])
final InjectorFactory injector = self.injector$Injector;
void main() {
runApp(ng.AppComponentNgFactory, createInjector: injector);
}