2017-03-19 28 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