Вызов функции компонента из сервиса - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь создать компонент загрузки файлов для моего приложения. В конце, когда загрузка файлов завершена, я хочу очистить файлы от загруженных, для этого я пишу нижнюю функцию в компоненте загрузки файлов.

  clearFileList(){
    this.uploadedFiles=[]
  }

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

Как мне это сделать.

1 Ответ

1 голос
/ 01 апреля 2019

Вызов функции компонента из службы это не лучший шаблон. Я предлагаю что-то другое. Сервис должен содержать публичную тему, а компонент должен подписаться на нее:

class Service {
  public stream$ = new Subject<any>();

  method() {
    this.stream$.next(...);
  }

}

class Component {
  constructor(private service: Service) {}

  onInit() {
    this.service.stream$.subscribe(data => {
      this.method(data);
    }
  }
  method() {
    // do stuff;
  }

}

Из сервиса вы можете вызвать method, который вызовет метод компонентов.

И конечно же помните про отписку.

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