Внедрить услугу в метод * stati c в Angular - PullRequest
0 голосов
/ 05 апреля 2020

Я реализовал сервис логгера. Я использую NGXS для управления состоянием, а селекторы в NGXS - методы stati c. Теперь я не могу использовать службу логгера, которую я вводил через Angular DI, в селекторах stati c.

Есть ли чистый и удобный способ использовать сервис в селекторах?

constructor(
  public logger: LoggerService
) {}

@Selector()
@ImmutableSelector()
public static get(state: StateModel) {
  // <-- Log via LoggerService
  return state.model;
}

1 Ответ

0 голосов
/ 05 апреля 2020

Прежде всего, не используйте метод stati c для использования вашего сервиса. Это не очень хорошая практика.

В любом случае, если вы хотите его использовать.

Просто импортируйте ваш сервис в конструктор, а затем вы можете использовать

export class myComponent {
  constructor(private logger: LoggerService) {
     this.constructor.logService = logger;
  }

  public static myMethod() {
   myComponent.logService.log_method()
     .subscribe(
       data => { console.log(data)   },
       error => { console.error(error); }
   );
  }
}

здесь уже здесь ответили. Доступ к службе в методе stati c в Angular 5. Выполнение поиска немного

...