Используйте классы в компоненте и внедрении зависимостей - PullRequest
0 голосов
/ 25 июня 2018

Я использую 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 голосов
/ 25 июня 2018

Есть несколько моментов, которые необходимо знать, прежде чем вы сможете это сделать.

1) Хотите ли вы использовать один и тот же экземпляр службы для вашего класса и компонента?

Если да, вызатем можете «ПРЕДОСТАВИТЬ» услугу в вашем КОМПОНЕНТЕ и передать экземпляр службы вашему КЛАССУ.

@Component({
  selector: '',
  templateUrl: '',
  providers: [Provide your service here]
})
export class MyComponent implements AfterViewInit {
  constructor(serv: MyServ){
    const myClass = new MyClass(serv);
  }
}

Обратите внимание, что если вы уже предоставили услугу в модуле, вы невам не нужно предоставлять его снова в компоненте.

Преимущество этого заключается в том, что вы теперь совместно используете один и тот же экземпляр службы с вашим классом и компонентом.

2)Если вы не хотите делиться экземпляром, вы можете просто создать новый экземпляр службы в конструкторе вашего класса.

import { MyService } from '../services/myService';

export class MyClass {
  constructor(myService: MyService = new MyService()) {

  }
}

Здесь вы задали параметр по умолчанию для вашего конструктора класса.Поэтому, если кто-то (Компонент в вашем случае) пропустит экземпляр службы, он будет использовать его, в противном случае он создаст свой собственный экземпляр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...