在angular 4 app中有条件地包含脚本标记

时间:2018-03-27 14:28:24

标签: angular

我使用的是Angular 4.4.6,并且在<script>之外有app-root个标记。看起来像这样

<script src="someUrlForQa"></script>

我想删除这个并包含

<script src="someUrlForProd"></script>

什么时候开始生产。

这样做的正确方法是什么?也许以某种方式使用angular-cli.json

1 个答案:

答案 0 :(得分:1)

你可以使用普通的Javascript。

let el = document.createElement('script');

if(condition) {
   el.src = 'someUrl';
}
else {
   el.src = 'otherUrl';
}

document.head.append(el);

然而,与Angular风格指南相反,它与DOM直接交互。如果你在Angular中这样做,创建它的'Angular方式'将是注入并使用Renderer2服务:

constructor(private _renderer: Renderer2) {}

public someMethod() {
    let el = this._renderer.createElement('script');
    el.src = 'conditionalUrl';
    this._renderer.appendChild(el, this_renderer.selectRootElement('body'));
}

在Angular中执行此操作而言,您可以劫持APP_INITIALIZER服务并提供您自己的初始化代码。查看this answer 了解更多信息。