在Angular 6中执行关于路线更改的JS脚本

时间:2018-09-20 08:24:46

标签: javascript jquery angular typescript webpack

我正在开发一个使用香草JS和JQuery开发的网站。 最近,我们决定将UI升级到Angular和Typescript。 我们使用piwik监视客户活动,并且piwik模块是用纯JS制作的。我的问题是,每当站点中的路由发生变化时,我都需要再次运行piwik脚本(以便将piwik事件绑定到组件),但是由于站点没有刷新,因此脚本没有再次执行。 我想要的是从打字稿中手动执行脚本(也许使用JQuery)。我看到的所有解决方案都是手动从dom中删除脚本,然后再次添加它,但这似乎是一种hack,我可以使用webpack / JQuery /任何其他技术来执行脚本吗?

1 个答案:

答案 0 :(得分:0)

Angular Router本身提供了一个可观察的流。

NavigationEnd事件发生时,您可以创建一个订阅该路由的路由保护程序。

constructor(private router: Router) {}

.....

this.router.events
      .subscribe((event) => {
        if (event instanceof NavigationEnd) {
          console.log('NavigationEnd:', event);
        }
      });

可能值得阅读Router Events

假设piwiki存在于全局范围内,则可以使用InjectionToken

对其进行调用

我根本不熟悉这个软件包,但是类似:

import { InjectionToken } from '@angular/core';
export const PWIKIPLUGIN = new InjectionToken('PWIKIPLUGIN');

然后用构造函数调用它

constructor(@Inject(PWIKIPLUGIN) private pwikiPlugin) {}

这应该使您能够调用pwikiPlugin.something()