所以这是一个服务说MyService
MyService在其实现中有一个构造函数
@Injectable()
export class MyService {
constructor(myObject: MyClass) {}
}
现在myObject是MyClass类型,我需要在注入服务时传递
我可以使用MyService的一种方式是
_myService = new MyService(new Myclass())
然后访问MyService中的方法
this._myService.someMethod();
但是使用这种方法,我必须在使用MyService的每个组件中执行此操作
我想将值传递给提供者数组
中NgModule中的MyService构造函数所以在我需要MyService的任何组件中我都可以使用
export class MyComponent {
constructor( _myService: MyService) {}
this._myService.someMethod();
}
答案 0 :(得分:0)
一种方法是使用ValueProvider
使Myclass
对象也成为可注射的
{ provide: Myclass, useValue: new Myclass() }
并将其添加到提供商。然后DI机制可以知道Myclass
类型并正确注入。服务构造函数必须提供参数
export class MyService {
constructor(myObject: MyClass) {}
}
并根据需要注入MyService
export class MyComponent {
constructor( _myService: MyService) {}
}
此外,您可以在服务中创建该实例,如果它们对所有实例都相同,则从构造函数中省略。
答案 1 :(得分:0)
所以我想出了怎么做
可以通过以下方式使用useFactory来完成
{
provide: MyService,
useFactory: MyServiceFactory
}
export function MyServiceFactory() {
return new MyService(new MyClass());
}
这将传递MyService构造函数所需的MyClass对象,并且此后可以将服务注入任何组件。
export class MyComponent {
constructor( _myService: MyService) {}
}