У меня есть несколько тегов сценариев асинхронных библиотек JavaScript в index.html, и я хочу применить к ним директиву атрибута для управления их «активацией», изменив атрибут type с «text / plain» на «text / javascript», когда Пользователь дает согласие на использование файлов cookie. Кажется, что директива никогда не достигается angular, возможно, потому что она находится за пределами угловой зоны, фактически журналы в конструкторе и в функции обратного вызова функции подписки никогда не печатаются в консоли, и директива становится бесполезной.
@Directive({
selector: '[appLoadOnConsent]'
})
export class LoadOnConsentDirective implements OnInit, OnDestroy {
private statusChangeSubscription: Subscription;
constructor(
private ccService: NgcCookieConsentService,
el: ElementRef
) {
// never printed
console.log(el);
}
ngOnInit() {
this.statusChangeSubscription = this.ccService.statusChange$.subscribe(
(event: NgcStatusChangeEvent) => {
// never printed
console.log('cookie status change', event);
});
}
ngOnDestroy() {
this.statusChangeSubscription.unsubscribe();
}
}
в index.html
<head>
....
// library 1
<script type="text/plain" appLoadOnConsent async defer src="https://external.library1.js"></script>
// library 2
<script type="text/plain" appLoadOnConsent async defer src="https://external.library2.js"></script>
</head>
....
Как мне достичь своей цели? Есть ли лучшие способы решить мою проблему?