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