Как передать подписанные данные в качестве ввода в другую функцию? - PullRequest
0 голосов
/ 25 октября 2018

getActiveId функция вернет мне ID, основываясь на перенастроенном идентификаторе. Мне нужно сделать еще один HTTP-вызов для извлечения данных с помощью функции getOpenIssues.

Так что в моем компоненте яподписавшись на эти функции, я мог видеть, что ID возвращается getActiveId.

Я передал ID в getOpenIssues функцию, она выбрасывает идентификатор не определен.

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

Это тот случай, как передать идентификатор другой функции?

Пожалуйста, помогите, я не могу продолжить.

Service.ts

getActiveId() {
  return this.http.get<any>(apiUrl);
}
getOpenIssues(id: string) {
  return this.http.get<any>(Url);
}

Component.ts

this.service.getActiveId()
.subscribe(response => this.id = response.id) // Returns ID 22407

this.service.getOpenIssues(this.id) // Should pass the ID 22407
.subscribe((response) => { })

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Компоненты могут иметь 2 метода getActiveId () и getOpenIssues ().Теперь нам нужно вызвать getActiveId (), который вызовет первую службу на основе ответа службы, вызвать другой метод того же компонента (который при необходимости вызовет другую службу).

getActiveId() {
this.service.getActiveId()
.subscribe(response => {
this.id = response.id;
this.getOpenIssues();
});
}

getOpenIssues() {
this.service.getOpenIssues(this.id)
.subscribe(issues=> //Your logic);
}`
0 голосов
/ 25 октября 2018

В вашем .component.ts, поскольку обе функции асинхронны, ваш getOpenIssues вызывается до завершения getActiveId.

Следовательно, вы можете внести следующие изменения:

this.service.getActiveId()
.subscribe(response => {
  this.id = response.id;
  this.service.getOpenIssues(this.id).subscribe(issues=>console.log(issues));// Returns ID 22407
  }) 

Вы также можете взглянуть на различные map операторы RxJS

this.service.getActiveId()
    .concatMap((id)=>this.service.getOpenIssues(id))
    .subscribe(issues=>console.log(issues))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...