Angular Http-подписка - невозможно назначить переменную в компоненте - PullRequest
0 голосов
/ 19 марта 2020

Я хочу получить данные из API и присвоить их некоторому значению внутри компонента angular. В subscribe я пытаюсь присвоить данные loggedUser и затем вызвать функцию внутри этой подписки, чтобы перейти к другому компоненту с этим полученным объектом. К сожалению, я получил ошибку: Запрошенный путь содержит неопределенный сегмент с индексом 1 . Я хочу, чтобы этот объект был установлен за пределами подписки тоже. Как мне этого добиться?

 logIn() {
      this.portfolioAppService.logIn(this.loggingUser).subscribe((data) => {
      this.loggedUser = data;
      console.log(this.loggedUser);
      console.log(data);
      this.navigateToProfile(this.loggedUser.Id);
    });
  }

  navigateToProfile(id: number) {
    this.router.navigate(['/profile', id]);   
  }

консольный вывод

1 Ответ

1 голос
/ 19 марта 2020

Вы используете свойство с неправильным именем при вызове navigateToProfile.

Из вывода вашей консоли я вижу, что объект data в подписке выглядит следующим образом:

{
  id: 35,
  // ..
}

Но вы вызываете функцию следующим образом:

this.navigateToProfile(this.loggedUser.Id);

Вместо этого используйте свойство id (нижний регистр)

this.navigateToProfile(this.loggedUser.id);

Чтобы сузить эту проблему в будущем, попробуйте более детально указать c в своем тестировании. Люди хорошо видят то, что хотят видеть, и считают, что проблема сложнее, чем она есть. Если бы вы попробовали console.log(this.loggedUser.Id), вы бы увидели результат undefined и решили бы проблему самостоятельно.

...