Как внедрить зависимость в класс в Angular 8 - PullRequest
1 голос
/ 29 апреля 2020

Я хочу использовать ngx translate внутри класса c в моем классе. Как я могу это сделать? Как сделать внедрение зависимостей в одноэлементном классе?

import { Injectable } from "@angular/core";
@Injectable()
export class MyService {
    static instance: MyService;

    static getInstance() {
        if (MyService.instance) {
            return MyService.instance;
        }

        MyService.instance = new MyService();
        return MyService.instance;
    }

    constructor() {
        if (!MyService.instance) {
             MyService.instance = this;
        }

        return MyService.instance;
    }
}

1 Ответ

1 голос
/ 29 апреля 2020

Просто используйте Услуги Singleton . Angular уже предоставил вам покрытие, поскольку Singleton управляется внутренне DI-контейнером. Экземпляр будет создан только один раз, а внедрение MyService в другой компонент будет эквивалентно вашему MyService.getInstance().

. Вам просто нужно установить providedIn scope для вашей службы на "root":

@Injectable({
  providedIn: 'root',
})
export class MyService {
   // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...