Динамическая загрузка твиттера в angular

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

        <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

и тег html, как на странице. Это прекрасно работает. Однако в моем случае URL-адрес исходит со стороны сервера. Это не работает для меня, так как кажется, что к тому времени, когда HTML-тег отображает значение URL-адреса, оно недоступно со стороны сервера.

и когда он доступен, виджет Twitter не обновляется, чтобы принять новый URL-адрес.

тег a выглядит следующим образом

 <a class="twitter-timeline" [href]="core.twitterFeed">Twitter Feed</a>

как заставить его работать, ожидая, пока это сработает? Я пытался сделать что-то вроде ниже, но это не работает


    <mat-card-content *ngIf="core.twitterFeed != undefined">
        <a class="twitter-timeline" [href]="core.twitterFeed">Twitter Feed</a>

    </mat-card-content>


person Moblize IT    schedule 21.06.2019    source источник
comment
*ngIf=core.twitterFeed работает?   -  person jeninja    schedule 21.06.2019
comment
нет, это не работает   -  person Moblize IT    schedule 21.06.2019


Ответы (1)


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

isBrowser = false;

ngOnInit() {
this.subscription = router.events.subscribe(e => {
    if(e instanceof NavigationEnd){
      this.isBrowser = true;
    }
  });
}

и используйте этот флаг для отображения вашего элемента

<mat-card-content *ngIf="isBrowser">
    <a class="twitter-timeline" [href]="core.twitterFeed">Twitter Feed</a>
</mat-card-content>

person Douglas P.    schedule 21.06.2019
comment
что это за подписка здесь? просто случайная переменная, например isBrowser? - person Moblize IT; 21.06.2019
comment
Я пытался изменить this.subscription, чтобы разрешить подписку, но это не сработало. - person Moblize IT; 21.06.2019
comment
Вы можете удалить подписку там, и она будет работать, но рекомендуется всегда отписываться от всех подписок, чтобы избежать утечки памяти. Если вы хотите отказаться от подписки, просто добавьте this subscriptions.unsubscribe(); в свой метод ngOnDestroy. Кстати, this.subscription относится к типу Subscription - person Douglas P.; 21.06.2019
comment
Это решение не работает. Моя лента твиттера не отображается и не обновляется - person Moblize IT; 21.06.2019
comment
Можете ли вы воспроизвести свою проблему в stackblitz? Если это так, может быть легче понять, что происходит. - person Douglas P.; 21.06.2019