angular 2 routerLink не работает при повторном посещении

У меня есть следующий код в моем приложении. Навигация работает при первом нажатии на якорный элемент. Он загружает соответствующий целевой компонент, и все в порядке. Однако, когда я снова нажимаю на элемент привязки, URL-адрес в адресной строке меняется, но соответствующий целевой компонент не срабатывает. Почему это происходит?

<div class="nav-features-content">
    <div>
        <div class="sideNav-header">WALLS</div>
        <ul>
            <li *ngFor="let wall of walls">
                <a [routerLink]="['/wall', wall.ViewItem_Id]"> {{wall.Title}}</a>
            </li>
        </ul>
    </div>
</div>

person Shilpa Nagavara    schedule 14.11.2016    source источник
comment
Пожалуйста, дайте минимальный воспроизводимый пример, HTML сам по себе не дает много информации.   -  person jonrsharpe    schedule 14.11.2016
comment
Различаются ли prms и ссылка, когда вы нажимаете второй раз. Обычно это происходит, когда URL-адрес Prms не изменяется, маршрутизатор не выполняет никаких действий.   -  person mayur    schedule 14.11.2016
comment
mayur, да, URL меняется с localhost:48512/wall/2 на --› localhost:48512/wall/46. Страница не обновляется.   -  person Shilpa Nagavara    schedule 14.11.2016
comment
42 становится правильным 46 .. Для тестирования попробуйте пример со стеной 1 и стеной 2 или добавьте что-то вроде этого s42 и s46   -  person mayur    schedule 14.11.2016
comment
когда я столкнулся с той же проблемой, я сделал var d = new Date(); переменная n = d.getTime(); и добавлено время в URL, которое может легко изменить навигацию по URL   -  person mayur    schedule 14.11.2016
comment
попытался добавить дату к URL. это не помогает. Я не думаю, что проблема связана с кэшированием данных. страница просто не загружается. ngOnInit и конструктор не срабатывают.   -  person Shilpa Nagavara    schedule 14.11.2016
comment
У меня такая же проблема. Пытаюсь связать с /company/1 на /company/2, меняется только URL, а компонент не перезагружается. Это не было проблемой в бета-версиях, есть ли способ заставить маршрутизатор перезагрузиться?   -  person somecallmemike    schedule 07.12.2016


Ответы (1)


Оказывается, нам нужно подписаться на параметры в целевом компоненте, вот так

private sub: any;

ngOnInit(): void {
  this.sub = this._route.params.subscribe(params => { 
  console.log(this._route.params.value.id);
  });
}

ngOnDestroy() {
        this.sub.unsubscribe();
    }

person Shilpa Nagavara    schedule 13.12.2016