【发布时间】:2020-03-09 21:45:17
【问题描述】:
我正在尝试将一个 html 脚本注入我的 Angular 9 应用程序(来自第 3 方支付门户解决方案)。
我已经很好地将数据加载到 angular 中(使用 rest API 调用),并在 component.ts 中执行此操作以尝试显示它。
snippetData() {
return this.sanitizer.bypassSecurityTrustHtml(this.checkoutSnippet);
}
这在 html 模板中。
<div class="col-6" [innerHTML]="snippetData()"></div>
我可以看到内容在 DOM 中相应更新,见下图。
id 为“paysonContainer”的 div 和绿色脚本中的轮廓从该脚本插入到 DOM 中。
该脚本从未加载,查看 Firefox 中的网络选项卡,它根本没有运行。
我需要做什么才能加载脚本?
【问题讨论】:
-
为什么要在运行时而不是在构建时加载脚本
-
因为它是由第 3 方生成的,并且可能随时更改。我无法控制它,我得到两个 html 标记(脚本和 div)作为对其 api 的“启动结帐”调用的字符串结果返回。
-
有趣。似乎是一个非常糟糕的结帐提供商,并且不是特别适合有角度的应用程序,因为这是一种非角度的反模式。此外,您不应该希望您的应用程序中的代码在没有您的祝福的情况下更改,因为某些东西可能会破坏。但不要使用函数来设置内部 HTML。只需将结果设置为一个属性并设置它。
-
我同意它不太理想。但这是我发现的最好的支付解决方案,适用于我所在国家/地区的本地支付方式。我也尝试设置结果属性,它没有工作,同样的结果。我只是尝试了上面的代码作为绝望的尝试,看看它是否有所作为。
标签: javascript angular angular9