我正试图找出一种好的(最好是最好的)方法来检测页面上是否加载了angular2。
我看了一下这个问题:Ways to Detect whether AngularJS is loaded in the current page or not,但答案只是说使用window.angular
,这是我尝试的第一件事(很久才找到答案。)好像是systemjs导致角度不在全局(窗口)范围内。
这是我的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>
根据this question和我对http2的理解,我没有看到不使用systemjs的真正原因。
显然,我可能错了,systemjs可能不是问题的原因;无论如何,window.angular
返回undefined,即使我正在查看我的角度应用程序。
为了给你我们的用例,如果它有帮助,我们正在通过一个init文件加载一个角度应用程序,该文件将在其他网站上使用(在大多数情况下我们不控制页面。)我们想要我们的init文件,以便能够检测页面中是否已包含angular2(和正确版本)以及其他依赖项。如果不是,我们会动态添加他们没有的东西来满足我们的需求。 (这种方法可能还有其他问题,但是当我们到达那里时我们将解决这些问题。)
摘要
window.angular
返回undefined。答案 0 :(得分:2)
我使用以下方法成功检测到Angular2:
window.ng