Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 可注入服务可以有提供者列表吗?_Dart_Angular Dart - Fatal编程技术网

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等确定的