Dart 可注入服务可以有提供者列表吗?
我在用一个组件类和一个服务类编写代码Dart 可注入服务可以有提供者列表吗?,dart,angular-dart,Dart,Angular Dart,我在用一个组件类和一个服务类编写代码 @Injectable() class MyService extends Object { ... } @Component( ... providers: const [MyService] ) class myCompoment implements onInit { final MyService _service; MyComponent(this._service); ... } 有没有一种方式可以说,为我的可注入服务
@Injectable()
class MyService extends Object {
...
}
@Component(
...
providers: const [MyService]
)
class myCompoment implements onInit {
final MyService _service;
MyComponent(this._service);
...
}
有没有一种方式可以说,为我的可注入服务提供一个提供者,这样它就可以使用?当在线查看时,它显示组件来自可注入,所以我想从服务中创建一个组件,但这对我来说没有太大意义,因为组件也会有UI
理想情况下,我想做以下事情:
@Injectable()
class AnotherClass {}
@Injectable(providers: const [AnotherClass])
class MyService extends Object {
...
}
@Component(
...
providers: const [MyService]
)
class myCompoment implements onInit {
final MyService _service;
MyComponent(this._service);
...
}
但是Injectable似乎不允许providers属性。您可以将
providers:const[MyService,AnotherClass]
添加到组件中,MyService
只需将其作为构造函数参数列出,就可以注入AnotherClass
@Injectable()
class AnotherClass {}
@Injectable()
class MyService extends Object {
final AnotherClass _anotherClass;
MyService(this._anotherClass);
}
@Component(
...
providers: const [MyService, AnotherClass]
)
class myCompoment implements onInit {
final MyService _service;
MyComponent(this._service);
...
}
我还不明白为什么要向
@Injectable()
添加提供程序。这很有意义,因为myComponent有一个提供程序,它在调用链中找到要使用的实例。如果myComponent没有它作为一个提供者,我认为它是行不通的。我想您可能需要将它添加到MyService的某个地方?服务在提供它们的地方被实例化。他们没有自己的等级制度。它们遵循组件层次结构。因此,在服务中添加提供商是没有意义的。我想你是对的,我试图理解,如果我说没有提供,会发生什么。这会导致错误吗?或者它会实现自己的实例,因为它不存在实例吗?如果Angular因为无法解析所需的构造函数参数(未找到提供程序)而尝试创建组件或服务的实例,则会引发异常。这是有意义的。这只是一个运行时异常,因为它不是通过intellisense等确定的