【发布时间】:2020-08-02 17:53:20
【问题描述】:
在您导入的另一个组件中使用服务时:
constructor(private exampleSrv: ExampleService) {}
使用类时,构造函数用于传递初始化对象的信息。如何在不通过构造函数导入的情况下在类中使用服务?或者有什么解决方法?
【问题讨论】:
标签: angular class ionic-framework import
在您导入的另一个组件中使用服务时:
constructor(private exampleSrv: ExampleService) {}
使用类时,构造函数用于传递初始化对象的信息。如何在不通过构造函数导入的情况下在类中使用服务?或者有什么解决方法?
【问题讨论】:
标签: angular class ionic-framework import
您并没有真正使用构造函数“导入”它。你告诉 Angular 的依赖注入系统你需要访问最近的服务实例。这就是依赖注入在 Angular 中的工作原理。
还值得注意的是,从 Typescript 速记的角度来看,您实际上在做什么:
export class MyComponent {
myService: MyService;
constructor(serviceArg: MyService) {
this.myService = serviceArg;
}
}
您基本上是在说您的组件在构建时需要MyService 类型的参数,因此 Angular 的依赖注入提供了一个。
【讨论】:
您可以执行以下操作
import { YourService} from 'where ever it lives';
private yourservice : YourService;
initaliseService() {
const injector = ReflectiveInjector.resolveAndCreate([YourService]);
this.yourservice = injector.get(YourService);
}
this.initialiseService() 然后通过 this.yourservice 访问。
如果您要使用的服务可以愉快地使用,而不是作为单例,并且它没有任何依赖项,您可以通过它使用它
this.yourservice = new Yourservice();
【讨论】: