2017-03-19 3 views
1

Ich habe den neuesten CLI und erstellt ein neues Testprojekt.Angular2/CLI ist das reservierte Wort modulId?

 angular2 version: "^2.3.1" 
"@angular/compiler-cli": "^2.3.1", 
"typescript":   "~2.0.3" 

In AppComponent Ich habe diesen Konstruktor:

export class AppComponent { 
    title = 'app works!'; 

     constructor() { 

      let test1 = { 
       id: 'test', 
       moduleId1: 'moduleId1', 
       moduleId: 'IsThisReserverdWord', 
       moduleId2: 'moduleId2' 
      }; 

      console.log(test1.moduleId1); 

      let test2 = { 
       moduleId: 'moduleId3', 
      }; 
     } 

Es ist sehr seltsam, dass der Teil Konsolenprotokoll wird nie getroffen, und es ist keine Ausnahme. Durch Entfernen der moduleId: 'IsThisReserverdWord' Eigentum ist alles in Ordnung. Also hier ist die Frage, warum die moduleId wie ein reserviertes Wort scheint? Oder ich vermisse etwas?

Antwort

1

moduleId wird verwendet, um relative Pfade für Ihre Stylesheets und Vorlagen aufzulösen, wie es in der Dokumentation heißt.

ref: https://angular.io/docs/ts/latest/cookbook/component-relative-paths.html

ohne module.id

templateUrl: 'app/components/my.component.html', 
styleUrls: ['app/components/my.component.css'] 

sehen, wie die URL beginnt Basispfad

aber mit moduleid können wir Verwendung von relativen Pfaden machen.

templateUrl: 'my.component.html' 
styleUrls: ['my.component.css'] 
+0

In diesem Beispiel ist ModuleId hier nicht der Teil des @Component-Dekorators, sondern eine Eigenschaft eines Objekts in der Klasse. Es sollte keine Spiegelung mit dem Codeteil auftreten! Was passiert, wenn wir einen Modellgenerator haben, der Entitäten nach Datenbankfeldern erzeugt, in denen auch der Feldname moduleId enthalten ist? Das bedeutet, dass wir das Wort moduleId nirgendwo im Code verwenden können? Wenn ja, muss es zumindest zu einer Ausnahme oder zu irgendeiner Warnung für den Benutzer führen, sonst ist der Standpunkt des Codes dies ein Fehler! – McLac

+0

Ihr Code funktioniert auch ohne Modul-ID, es ist kein Mandat, es zu verwenden. Und weil Sie Ihren tsconfig möglicherweise so konfiguriert haben, dass er moduleid verwendet, wird er als Systemschlüsselwort verwendet. –

+0

Wenn wir moduleId als Systemschlüsselwort betrachten, sollte der Compiler die Codeverwendung als Fehler markieren. Jetzt führt es zu unerwartetem Verhalten. – McLac

Verwandte Themen