在组件和依赖项注入中使用类

时间:2018-06-25 12:26:24

标签: angular class dependency-injection

我使用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个”。

所以我的问题是如何使用类并享受依赖注入?我对此一无所知。

或者,我必须在我的组件构造函数中添加依赖关系并将它们传递给我的类?

也许更好的混合方式?

预先感谢

1 个答案:

答案 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);
  }
}

在这里,您为类构造函数指定了默认参数。因此,如果某人(在您的情况下为组件)通过了服务实例,它将使用该实例,否则将创建自己的实例。