2017-03-19 63 views
1

我得到了最新的cli並創建了一個新的測試項目。Angular2/CLI是moduleId保留字嗎?

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

在AppComponent我有這樣的構造:

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', 
      }; 
     } 

這是非常奇怪的是,控制檯日誌部是從來沒有打,也沒有例外。通過刪除moduleId:'IsThisReserverdWord'屬性它都很好。所以這裏是爲什麼moduleId看起來像一個保留字? 或者我錯過了什麼?

回答

1

moduleId用於解析樣式表和模板的相對路徑,如文檔中所述。

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

沒有module.id

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

看到的網址從基本路徑

怎麼開始的,但用的moduleId,我們可以使用相對路徑。

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

在本例中,ModuleId不是@Component裝飾器的一部分,而是類中對象的屬性。沒有反射應該遇到代碼部分!如果我們有一個模型生成器通過數據庫字段來生成實體,其中也有字段名稱moduleId,會怎樣?這意味着我們不能在代碼的任何地方使用單詞moduleId?如果是這樣,它必須至少導致異常或任何警告給用戶,否則代碼的觀點是錯誤! – McLac

+0

你的代碼也可以在沒有模塊ID的情況下工作,它不是使用它的任務。而且因爲你可能已經配置你的tsconfig來使用模塊ID,它將它作爲系統關鍵字 –

+0

如果我們將moduleId看作系統關鍵字,編譯器應該將代碼使用標記爲錯誤。現在它導致意想不到的行爲 – McLac