Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Systemjs时检测是否在页面上加载Angular_Javascript_Angular_Systemjs - Fatal编程技术网

Javascript 使用Systemjs时检测是否在页面上加载Angular

Javascript 使用Systemjs时检测是否在页面上加载Angular,javascript,angular,systemjs,Javascript,Angular,Systemjs,更新: 这个问题专门讨论Angular 2,现在已经过时了。在发布时,没有一种方法可以检测它是否加载到页面上。我没有测试过其他版本,但是Angular 8现在有了一个简单的方法来检测这个问题,下面的答案已经指出了这一点 我正试图找出一种好的(最好是最好的)方法来检测页面上是否加载了Angular 我看了一下这个问题:,但答案只是说明使用window.angular,这是我尝试的第一件事(在找到答案之前很久)。似乎systemjs导致angular不在全局(窗口)范围内 以下是我的html文件的

更新:

这个问题专门讨论Angular 2,现在已经过时了。在发布时,没有一种方法可以检测它是否加载到页面上。我没有测试过其他版本,但是Angular 8现在有了一个简单的方法来检测这个问题,下面的答案已经指出了这一点


我正试图找出一种好的(最好是最好的)方法来检测页面上是否加载了Angular

我看了一下这个问题:,但答案只是说明使用
window.angular
,这是我尝试的第一件事(在找到答案之前很久)。似乎systemjs导致angular不在全局(窗口)范围内

以下是我的html文件的标题:

<script src="client/node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="client/node_modules/systemjs/dist/system.src.js"></script>
<script src="client/node_modules/rxjs/bundles/Rx.js"></script>
<script src="client/node_modules/angular2/bundles/angular2.dev.js"></script>
<link rel="stylesheet" href="client/styles/main.css"/>

<script>
  System.config({
    packages: {        
        client: {
            format: 'register',
            defaultExtension: 'js'
        }
    }
  });
  System.import('client/app')
        .then(null, console.error.bind(console));
</script>

System.config({
包:{
客户:{
格式:'寄存器',
defaultExtension:'js'
}
}
});
System.import('客户端/应用程序')
.then(null,console.error.bind(console));
基于我对http2的理解,我认为没有真正的理由不使用systemjs

显然,我可能错了,systemjs可能不是问题的原因;无论如何,
window.angular
返回未定义,即使我正在查看我的angular应用程序

为了给你我们的用例,如果有帮助的话,我们正在通过一个init文件加载angular2应用程序,该文件将在其他网站上使用(在大多数情况下我们不控制页面)。我们希望我们的init文件能够检测页面上是否已经包含angular2(以及正确的版本)。如果他们没有,我们就动态地添加他们没有的东西来满足我们的需要。(这种方法可能还存在一些其他问题,但我们将在实现这些问题后解决这些问题。)

摘要

  • 我们需要检测页面上是否加载了Angular,以及哪个版本
  • 使用systemjs,
    window.angular
    返回未定义
  • Angular应用程序运行良好,没有问题
  • 对于http2,我们不认为不需要使用systemjs加载Angular,但我们并不反对在必要时进行更改

  • 我使用以下方法成功检测Angular2:

    window.ng