全局功能在功能内部不可见

时间:2016-12-19 11:57:01

标签: javascript angular google-analytics

我正在通过网页标题中名为analytics.js的文件注入Google Analytics代码,如下所示:

<script src="/assets/js/analytics.js"></script>

这很好用。如果我转到网页,我可以从我的控制台访问全局功能ga

然而,在我的服务中,看起来像这样:

import {Injectable} from "@angular/core";
import {Router, NavigationEnd} from "@angular/router";
var ga:any;

@Injectable()
export class GoogleAnalyticsService{
    constructor(){
      console.log(ga);
    }

    test(){
        console.log(typeof ga);
    }
}

在这两种情况下,控制台输出都是未定义的。我将我的Angular2注入html代码的底部,因此它作为最后一个脚本加载。

发生了什么事?

1 个答案:

答案 0 :(得分:4)

替换:

var ga:any;

declare var ga: any;

第一个创建新变量,而最后一个声明类型