Angular2:如何在路由更改时运行jQuery初始化脚本?

时间:2018-04-16 00:43:47

标签: jquery angular angular2-routing

我在Angular2应用程序中有一个元素,当我刷新页面或最初转到它时加载正常,但是当我将路径更改为父页面时隐藏了该元素。我正在使用一些购买的样式/ js,当我搜索元素名称时,我在.ready()调用中发现了一些显示元素并调整其高度的函数。我认为问题是这些初始化脚本第一次运行,但是当我更改路由时它们不会执行。我需要整个网站上的这些脚本,我不能真正拆分它们,因为它们已经缩小了。我尝试将所有脚本弹出到组件HTML的底部,但这不起作用(不是我预期的那样)。

如果这还不够信息,我可以将js和有问题的元素粘贴在一起,但在我看来,这样的东西会出现很多,因此有一个简单的通用修复。

2 个答案:

答案 0 :(得分:2)

这件事发生在我身上的主题也不是Angular准备好的,我很确定此时应该有更清晰的解决方法,但那时它对我有用。将主题的js库加载到主要组件中:

ngAfterViewInit() {
    if (document.getElementById("yourLibUniqueId")) {
        document.getElementById("yourLibUniqueId").remove();
    }

    var s = document.createElement("script");
    s.type = "text/javascript";
    s.src = "lib/yourLib.js";
    s.id = "yourLibUniqueId";
    this.elementRef.nativeElement.appendChild(s);
}

答案 1 :(得分:1)

您可以使用activate的{​​{1}}方法作为:

router-outlet

然后在<router-outlet (activate)="onActivate($event)"></router-outlet> 做任何你想做的事。