Angular 7: идентификатор snapshot.params не определен - PullRequest
0 голосов
/ 18 мая 2019

Я работаю с этим поддельным API 'jsonplaceholder', получая и отправляя данные с одной моделью: Пользователи. Моя цель - отобразить список пользователей, и при каждом нажатии я перемещаюсь к другому компоненту, где я вижу его идентификатор. Но пока я могу только отобразить список; Идентификатор не определен, и я больше ничего не могу сделать. Я пытался следовать этому сообщению , но это не сработало Может кто-нибудь помочь?

Служба:

getUsers(): Observable<Users> {
    const httpOptions = {
      headers: new HttpHeaders({
        'Content-Type': 'application/json',
        'Access-Control-Allow-Origin': '*'
      }) 
    };
    return this.http.get<Users>(this.urlUsers, httpOptions).pipe(
      retry(3),
      catchError(this.handleError));
  }

Home.TS

  users: Users;
  id: string;
  constructor(private router: Router,
    private dataService: DataService,
    private route: ActivatedRoute) {
    this.id =  this.route.snapshot.params['id'];  
    console.log(this.id); -----> undefined
  }

  ngOnInit() {
    this.getUsers();
 }

  getUsers() {
    this.dataService.getUsers().subscribe(data => {
      this.users = data;
      console.log(this.users);

    });
  }

getById(){
  this.dataService.getById(this.id).subscribe(data => {
    this.users=data['id'];
    this.router.navigate(['/second, users.id'])
  })
}

ГЛАВНАЯ HTML

<div class="container">
  <ul *ngFor="let user of users">
    <li (click) = "getById();">{{user.name}}</li> ---->backend returns 404
  </ul>
</div>

РЕДАКТИРОВАТЬ: Мои маршруты

const routes: Routes = [
  {
    path: 'home',
    component: HomeComponent
  },
  {
    path: 'second',
    component: SecondComponent
  },
  {
    path: '**',
    redirectTo: '/'
  },
  {
    path: '',
    component: HomeComponent
  },
];

И paramsMap тоже не работают ...

Ответы [ 2 ]

0 голосов
/ 18 мая 2019

Вам необходимо получить paramMap чек документации

this.route.paramMap['id'];

0 голосов
/ 18 мая 2019

Довольно ясно, что ваш домашний маршрут не принимает никаких параметров, которые вам нужны, чтобы изменить его, поэтому он принимает параметры {path:"home/:id" , ...}

, а также на линии this.router.navigate(['/second, users.id'])

выпередают строку типа "/second, users.id"

Я имею в виду, что вы не присваиваете идентификатор пользователя. Это ошибка, попробуйте изменить следующее

this.router.navigate(['/second', users.id])

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

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