Я создал angular приложение с компонентами маршрутизации. Я пытался добавить кнопки обмена Facebook и Twitter. При переходе к другим компонентам через ссылки на маршрутизаторы кнопки общего доступа Facebook и Twitter корректно обновляют свои URL-адреса. Но при переходе к тому же компоненту, который уже активен с другими параметрами маршрута, кнопка общего доступа Facebook корректно обновляет URL, а кнопка общего доступа Twitter - нет.
Я создал репродукцию: https://github.com/MintPlayer/SocialShareButtonsAngular
Теперь вы можете проверить это: - Верхние кнопки общего доступа из AppComponent. Они не изменятся при навигации. - Нижние кнопки общего доступа расположены в компонентах маршрутизации, каждый раз снова, чтобы продемонстрировать, что происходит
- Home
- На главной странице щелкните нижний общий ресурс Facebook
- URL для общего доступа: u = https% 3A% 2F% 2F ....% 2Fhome
- Нажмите нижнюю кнопку Tweet
- URL для общего доступа https://..../home
- Все отлично
- Go для Джона Вика
- На странице John Wick нажмите нижняя доля Facebook
- URL, которым нужно поделиться: u = https% 3A% 2F% 2F ....% 2Fperson% 2F1 ( / person / 1 )
- Нажмите нижнюю кнопку Tweet
- URL, которым вы хотите поделиться: https://..../person/1
- Все отлично
- Теперь перейдите к другой человек (например, Ганнибал Лектер)
- На странице Джона Вика щелкните нижнюю долю Facebook
- URL-адрес, которым вы хотите поделиться: u = https% 3A% 2F% 2Fmintplayer.com% 2Fperson% 2F2 ( / person / 2 )
- Нажмите нижняя кнопка Tweet
- URL-адрес для совместного использования: STILL https://..../person/1
- При переключении между элементами, отображаемыми в одном компоненте навигации, в Twitter URL-адрес общего доступа не обновляется.
Все репродукции можно найти в этом репозитории: https://github.com/MintPlayer/SocialShareButtonsAngular
Здесь необходимо информация уже выводится на консоль.
Внутри FacebookShareComponent и TwitterShareComponent есть вход routerLink. Когда устанавливается routerLink, массив команд вычисляется. Элементы внутри этого массива также отслеживаются с помощью IterableDiffers.
ngAfterViewChecked() {
const change = this.differ.diff(this.commands);
if (change !== null) {
// console.log(change);
this.updateHref();
this.reloadTwitterWidgets();
}
}
Как я могу обновить URL-адрес общего ресурса для существующей кнопки Twitter? В настоящее время я использую angular 9.