вам нужно загрузить widgets.js
скрипт после того, как элемент twitter-timeline
отрендерен, поэтому если вы поместите скрипт в index.html, он будет загружен, а элемент еще не отрисован.
? лучший способ обойти это динамически создать тег сценария после рендеринга элемента.
твиттерный компонент
export class TwitterComponent {
@Input() user:string;
constructor(private renderer2: Renderer2,private el: ElementRef) {}
ngAfterViewInit() {
let scriptEl = document.createElement('script');
scriptEl.src = "https://platform.twitter.com/widgets.js"
this.renderer2.appendChild(this.el.nativeElement, scriptEl);
}
}
шаблон
<a class="twitter-timeline" href="https://twitter.com/{{user}}">Tweets by {{user}}</a>
шаблон компонента приложения
<app-twitter [user]="name"></app-twitter>
угловые твиттеры ⚡⚡
ngAfterViewInit () ловушка жизненного цикла, которая вызывается после того, как Angular полностью инициализировал представление компонента.
Обновлено ??
простое упоминание в этом ответе ранее от пользователя по имени Бернардо Баумблатт
поставить ссылку на скрипт в index.html
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8">
</script>
загрузка виджетов Twitter при вызове метода ngAfterViewInit
ngAfterViewInit() {
// @ts-ignore
twttr.widgets.load();
}
в любом случае сценарий еще не загружен, но вы получите сообщение об ошибке типа ? twttr is not defined
?, поэтому скачайте сценарий widgets.js
и включите его в свой проект с помощью импорта
main.ts
import './app/widgets.js'
демо ??