簡體   English   中英

使用Systemjs時檢測頁面上是否加載了Angular

[英]Detect whether Angular is loaded on a page when using Systemjs

更新:

這個問題專門討論了Angular 2 ,現在已經過時了 在發布時,沒有辦法檢測它是否已加載到頁面上。 我沒有測試過其他版本,但Angular 8現在有一種簡單的方法可以檢測到這一點,並在下面的答案中指出。


我試圖找出一個好的(最好是最好的)方法來檢測頁面上是否加載了Angular。

我看了一下這個問題: 檢測AngularJS是否加載到當前頁面的方法 ,但答案只是說明使用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>

基於這個問題 ,以及我對http2的理解,我沒有看到不使用systemjs的真正原因。

顯然,我可能是錯的,systemjs可能不是問題的原因; 無論如何, window.angular返回undefined,即使我正在查看我的Angular應用程序。

為了給你我們的用例,萬一它有幫助,我們正在通過一個init文件加載一個角度應用程序,該文件將在其他網站上使用(在大多數情況下我們不控制頁面。)我們希望我們的init文件是能夠檢測頁面中是否已包含angular2(和正確版本)以及其他依賴項。 如果不是,我們會動態添加他們沒有的東西來滿足我們的需求。 (這種方法可能還有其他問題,但是當我們到達那里時我們將解決這些問題。)

摘要

  1. 我們需要檢測頁面上是否加載了Angular,以及版本是什么。
  2. 使用systemjs, window.angular返回undefined。
  3. Angular應用程序運行良好,沒有問題。
  4. 使用http2,我們不認為不需要使用systemjs加載Angular,但我們並不反對在必要時更改它。

我成功使用以下方法檢測Angular2:

window.ng

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM