2016-01-13 25 views
5

Ich versuche, eine gute (vorzugsweise die beste) Möglichkeit herauszufinden, ob angular2 auf der Seite geladen ist oder nicht.Ermitteln, ob Angular2 auf einer Seite geladen wird, wenn Systemjs

ich in dieser Frage einen Blick nahm: Ways to Detect whether AngularJS is loaded in the current page or not, aber die Antwort einfach erklärt window.angular, zu verwenden, die das erste, was ich (., Lange bevor diese Antwort zu finden) versucht, es scheint, als ob systemjs Winkel verursachte in nicht zu sein der globale (Fenster-) Umfang Hier

ist der Kopf von meiner html-Datei:

<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> 

Basierend auf this question, und mein Verständnis von http2, ich habe keinen wirklichen Grund sehe nicht systemjs zu verwenden.

Offensichtlich kann ich falsch liegen, Systemjs möglicherweise nicht die Ursache des Problems; Egal, window.angular gibt undefined zurück, obwohl ich meine eckige App anschaue.

Um Ihnen unseren Anwendungsfall zu geben, falls es hilft, laden wir eine eckige App über eine Init-Datei, die auf anderen Websites verwendet wird (wo wir die Seite in den meisten Fällen nicht kontrollieren) Init-Datei, um zu erkennen, ob angular2 (und die richtige Version) neben anderen Abhängigkeiten bereits auf der Seite enthalten sind. Wenn sie es nicht sind, fügen wir dynamisch hinzu, was sie nicht für unsere Bedürfnisse haben. (Es kann einige andere Probleme mit diesem Ansatz sein, aber wir werden diese Probleme angehen, wenn wir dort ankommen.)

Zusammenfassung

  1. Wir müssen erkennen, ob Winkel auf der Seite geladen wird, und welche Version.
  2. Mit Systemjs, window.angular wird undefined zurückgegeben.
  3. Die eckige App läuft gut und ohne Problem.
  4. Mit http2, sehen wir nicht die Notwendigkeit, eckig nicht mit Systemjs zu laden, aber wir sind nicht dagegen, wenn nötig zu ändern.

Antwort

1

Ich hatte Erfolg Erkennung Angular2 mit:

window.ng 
Verwandte Themen