Angular: Использование сервисов в классах - PullRequest
0 голосов
/ 02 августа 2020

При использовании Службы в другом компоненте вы импортируете am так:

constructor(private exampleSrv: ExampleService) {}

При использовании классов конструктор используется для передачи информации для инициализации объекта. Как я могу использовать Сервис в классе, не импортируя его через конструктор? Или есть обходной путь?

Ответы [ 2 ]

2 голосов
/ 02 августа 2020

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

Также стоит отметить, что то, что вы на самом деле делаете, с точки зрения сокращений Typescript, таково:

export class MyComponent {
  myService: MyService;

  constructor(serviceArg: MyService) {
    this.myService = serviceArg;
  }
}

You в основном говорят, что вашему компоненту требуется аргумент типа MyService при его сборке, поэтому инъекция зависимостей Angular предоставляет его.

0 голосов
/ 02 августа 2020

вы можете сделать следующее

import { YourService} from 'where ever it lives';


private yourservice : YourService;

initaliseService() {
  const injector = ReflectiveInjector.resolveAndCreate([YourService]);
  this.yourservice = injector.get(YourService);
}

this.initaliseService (), а затем получить доступ через this.yourservice.

, если сервис, который вы хотите использовать, можно использовать НЕ как одиночный и у него нет никаких зависимостей, вы можете использовать его через

this.yourservice  = new Yourservice();
...