Angular 2-динамически меняющийся URL (в адресной строке)
Я столкнулся с этим поведением на веб-сайте ESPN и задавался вопросом, как добиться этого с помощью Angular2. Когда я читаю статью там, как только статья закончена, загружается следующая статья, и URL-адрес в адресной строке автоматически изменяется. Как только я прокручиваю назад к старой статье, URL-адрес снова меняется на старый.
Возьмем, к примеру, эту ссылку.
Это просто случайная статья с сайта. Вы можете проверить поведение, упомянутое выше. Я также увидел, что сайт ESPN не был построен с Angular 2.
Тем не менее, мне просто интересно, если я хочу сделать это с помощью Angular2, как мне поступить? То есть изменить URL в адресной строке при прокрутке страницы или что-то в этом роде.
3 ответов:
У вас будет два варианта: использовать хэш ( # ) или не использовать его:).
Чтобы не использовать хэш, вам нужно будет сказать вашему серверу перенаправить все запросы на индексацию.html иначе это не сработает.
И вам нужно будет сказать:
RouterModule.forRoot( ROUTES , { useHash : false } )
Вы можете управлять текущим якорем, как вы хотите, в Javascript без перезагрузки страницы. Итак, когда вы устанавливаете свой url с помощью:
location.href = location.href+ "#1234";Вы не будете перезагружать страницу, пока "1234" не будет означать что-то для маршрутизатора.
На случай, если кто-то все еще хочет решить эту проблему.
Вот чем я тогда занимался. Просматривая документацию, я понял, что когда маршрутизатор переходит к маршруту, который отображает тот же компонент, компонент не инициализируется снова.
Допустим, у вас есть этот маршрут, который отображает item Component.
item/:idКогда вы ориентируетесь вот так.
item/3 -> item/4Компонент больше не инициализируется. Я воспользовался этим и в зависимости от моего тока расположившись на странице, я перешел к нужному URL в адресной строке. Это звучит не совсем убедительно, но это действительно работает.
Comments