Я не уверен, почему вы не можете использовать <script>
внутри компонента, но это, скорее всего, по соображениям безопасности или AoT.В любом случае, это плохая практика для компонента Angular.
У меня нет для вас реального решения, но я бы попробовал это.
В шаблон вашего компонента добавьте элемент для храненияАтрибут данных и предоставьте ему ссылку #target
.
<span #target data-pp-payerid="XXXXXXXXXX" data-pp-placementtype="728x90" data-pp-style="BLUWHTYLRG">
Теперь вы можете получить доступ к этому элементу DOM через атрибут @ViewChild
.
@ViewChild('target')
public target: ElementRef;
Теперь просто вставьте <script>
элемент для загрузки merchant.js
.
public OnInit() {
const n = document.createElement('script');
n.src="//www.paypalobjects.com/upstream/bizcomponents/js/merchant.js";
this.target.nativeElement.appendChild(n);
}
Я не уверен, что это будет работать.Я не понимаю, как merchant.js
может читать атрибуты из родительского узла в DOM.Когда скрипт загружается, у него нет ссылки на оригинальный тег <script>
, который его загрузил.
Редактировать:
Этот ответ может быть обновлен для использованияDocument
для инъекций и сервис Render2
для поддержки рендеринга на стороне сервера.