Angular 5, Использовать PlatformLocation для получения параметров запроса из URL (без маршрутизатора)? - PullRequest
0 голосов
/ 30 апреля 2018

Как получить параметры запроса из URL в Angular5?

ссылка на мою веб-страницу, например: http://localhost:4200/index.html?action=show-news&type=1

Я хочу, чтобы они были у меня на службе ...


В Angualr1.x я могу получить параметры запроса из $ location, например:

var searchObject = $location.search();

В Angular5 я могу получить их из PlatformLocation, например:

this.platformLocation.search

Но в документах: PlatformLocation - ' Этот класс не должен использоваться непосредственно разработчиком приложения. Вместо этого используйте Местоположение. '

В Class Location я не могу найти решение для получения параметров запроса.


Кто-то сказал, чтобы получить их из класса ActivatedRoute, как:

this.activatedRoute.queryParams.subscribe(params => {
  console.log('this.route.snapshot.queryParamMap: ', this.route.snapshot.queryParamMap);
});

Но он не может их получить ...

Что я могу сделать? Использовать Class PlatformLocation напрямую?

1 Ответ

0 голосов
/ 30 апреля 2018

Вы должны ввести ActivatedRoute:

private _queryParams;

constructor(
  private readonly _router: Router,
  private readonly _activatedRoute: ActivatedRoute
)

ngOnInit() {
    this.assignQueryParams();
    this._router.events
     .takeUntil(this._destroy$)
     .filter(event => event instanceof NavigationEnd)
     .subscribe(() => this.assignQueryParams());
}

private assignQueryParams() {
  this._queryParams = this._activatedRoute.snapshot.queryParams;
}

И затем, получая состояние _activationRoute при инициализации и при смене маршрутизатора, вы всегда получаете ссылку на текущий queryParams в своем компоненте!

...