62

Angular2 は<script>テンプレートからタグを自動的に削除し、人々がこの機能を「貧乏人」ローダーとして使用するのを阻止します。

ここでの問題は、スクリプト タグには現在、コードやその他のスクリプト ファイルをロードするだけでなく、より多くの用途があることです。<script>今後、タグに関する追加機能が導入される可能性もあります。

現在の用途の 1 つは、次の形式を取る JSON-LD です。

<script type="application/ld+json">
{
    "@context":"http://schema.org",
    "@type":"HealthClub",
    ...
}
</script>

一般的に提案されている回避策は、スクリプト タグをフックを介してドキュメントに動的に追加することngAfterViewInitですが、これは明らかに適切な ng2 プラクティスではなく、JSON-LD が明らかにできる必要があるサーバー側では機能しません。

<script>angular2 テンプレートにタグを含めるために使用できる他の回避策はありますか(タグがブラウザー内で不活性であっても)、またはこれはフレームワークがあまりにも独断的である場合ですか? この状況が angular2 で解決できない場合、他にどのような解決策が存在する可能性がありますか?

4

7 に答える 7

1

次の方法で、コンポーネントの init life フック内の条件を使用して動的にロードする js スクリプトを追加しました。

    private loadChatWithScript() {
    let chatScript = document.createElement("script");
    chatScript.type = "text/javascript";
    chatScript.async = true;
    chatScript.src = "https://chat-assets.frontapp.com/v1/chat.bundle.js";
    document.body.appendChild(chatScript);

    let chatScriptConfiguration = document.createElement("script");
    chatScriptConfiguration.type = "text/javascript";
    chatScriptConfiguration.async = true;
    chatScriptConfiguration.innerHTML = "window.FCSP = 'some-key-123'";
    document.body.appendChild(chatScriptConfiguration);
}
于 2020-06-02T23:01:07.393 に答える