Как подписаться на изменение параметров маршрута в Angular? - PullRequest
0 голосов
/ 13 марта 2020

Если я изменю параметры маршрута, в консоли ничего не регистрируется. Определен параметр id.

Кто-нибудь знает, почему это так не работает?

export abstract class GenericLeftPanelComponent<T extends ItemIdName>
  implements OnInit, OnDestroy {
  data: T[] = [];
  protected getSubscription: Subscription = new Subscription();
  protected mainSubscription: Subscription = new Subscription();
  protected refreshSubscription: Subscription = new Subscription();
  protected startSubscription: Subscription = new Subscription();

  protected constructor(
    protected genericService: GenericService<T>,
    protected router: Router,
    protected route: ActivatedRoute,
    @Optional() draggable: boolean
  ) {
    this.actionButtons = actionButtons;
    this.tableColumnDefinition = tableColumnDefinition;
    this.draggable = draggable;
  }

  ngOnInit() {
    this.get();
    this.refresh();

    this.startSubscription.add(
      this.route.params.subscribe(params => {
        if (this.route.snapshot.paramMap.has('id')) {
          console.log("view -", this.route.snapshot.params.id);
        }
      })
    );

...

1 Ответ

0 голосов
/ 13 марта 2020

Параметры немного хитры и зависят от RouterResueStrategy . Если маршрут не используется повторно, вы никогда не увидите изменений, потому что компонент воссоздается каждый раз. Так работает по умолчанию. Еще один вопрос, как вы меняете свои параметры? Если вы измените параметры строки запроса в адресной строке браузера и нажмете клавишу ввода, вы перезагрузите все приложение.

Вы можете использовать события маршрутизатора, если вам нужно отслеживать навигацию, и там также доступны параметры.

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