Angular ActivatedRoute, paramMap.get ('id') не работает должным образом - PullRequest
0 голосов
/ 17 июня 2020

, так что в основном я хочу получить что-то с моего сервера, используя идентификатор объекта.

Идентификатор также находится в URL-адресе:

http://xyz/detail/5ee8cb8398e9a44d0df65455

Итак, теперь я пытаюсь сделать следующее в xyz.component.ts:

  getEx(): void {
    let id:string = +this.route.snapshot.paramMap.get('id');
    const x = this.exService.getEx(id)
      .subscribe(ex => this.ex = ex);
  }

Но это не работает, потому что paramMap.get возвращает число, а не строку.

Тип «число» не присваивается типу 'string'.ts (2322)

Последняя часть моего URL-адреса - это строка, как я могу получить эту строку?

Спасибо за вашу помощь!

Ответы [ 3 ]

0 голосов
/ 17 июня 2020
id: any;

constructor(public route: ActivatedRoute) { }

ngOnInit(): void {
    this.route.queryParams.subscribe(params => {
      this.id = params['id'];
   })
}

Он может читать id из формата ссылки: localhost: 4200 / componentname? Id = abcdef

и вернет значение abcdef в переменной id

0 голосов
/ 17 июня 2020

Удалите знак + из +this.route в коде. Таким образом, он пытается преобразовать id, который является строкой, в int.

Вот почему он выдает Type 'number' is not assignable to type 'string'.ts(2322) ошибку

getEx(): void {
    let id:string = this.route.snapshot.paramMap.get('id');
    const x = this.exService.getEx(id)
      .subscribe(ex => this.ex = ex);
  }
0 голосов
/ 17 июня 2020

route.snapshot.paramMap.get возвращает только строку. Кажется, вы добавили + перед тем, что преобразует это в int.

Это должно быть просто:

let id:string = this.route.snapshot.paramMap.get('id');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...