我使用Angular并具有1个组件,1个类和1个服务。
我的服务是@injectable类,并且在app.module.ts中设置得很好。
@Injectable()
export class MyService {
我的班级将服务作为依赖项注入。
import { MyService } from '../services/myService';
export class MyClass {
constructor(
myService: MyService
) {
在组件构造函数中,我尝试创建类MyClass的新实例。
export class MyComponent implements AfterViewInit {
constructor(
) {
const myClass = new MyClass();
}
但是我得到了:“预期有1个参数,但有0个”。
所以我的问题是如何使用类并享受依赖注入?我对此一无所知。
或者,我必须在我的组件构造函数中添加依赖关系并将它们传递给我的类?
也许更好的混合方式?
预先感谢
答案 0 :(得分:1)
在执行此操作之前,需要了解一些要点。
1)您是否要与您的类和组件共享服务的同一实例?
如果是,则可以在组件中“提供”服务并将该服务的实例传递给CLASS。
doubles
请注意,如果您已经在模块中提供了服务,则无需在组件中再次提供。
这样做的好处是,您现在与类和组件都共享相同的服务实例。
2)如果您不想共享实例,则只需在类构造函数中创建服务的新实例。
@Component({
selector: '',
templateUrl: '',
providers: [Provide your service here]
})
export class MyComponent implements AfterViewInit {
constructor(serv: MyServ){
const myClass = new MyClass(serv);
}
}
在这里,您为类构造函数指定了默认参数。因此,如果某人(在您的情况下为组件)通过了服务实例,它将使用该实例,否则将创建自己的实例。