Angular2/CLI是moduleId保留字吗?

Angular2/CLI是moduleId保留字吗?,angular,angular-cli,Angular,Angular Cli,我获得了最新的cli并创建了一个新的测试项目 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 =

我获得了最新的cli并创建了一个新的测试项目

       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'属性,一切正常。这就是为什么模块ID看起来像一个保留字的问题?
或者我遗漏了什么?

moduleId用于解析文档中所述的样式表和模板的相对路径

参考:

不带module.id

templateUrl: 'app/components/my.component.html', 
styleUrls:  ['app/components/my.component.css'] 
查看url如何从基本路径开始

但是有了moduleid,我们可以利用相对路径

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

在本例中,ModuleId不是@Component装饰器的一部分,而是类中对象的一个属性。代码部分不应遇到任何反射!如果我们有一个模型生成器,它通过数据库字段生成实体,其中也有字段名moduleId,该怎么办?这意味着我们不能在代码中的任何地方使用moduleId?如果是这样,它必须至少导致一个异常或任何警告用户,否则从代码的角度来看,这是错误!您的代码也可以在没有模块id的情况下工作,而不是强制使用它。而且,因为您可能已经将tsconfig配置为使用moduleid,所以它将作为系统关键字。如果我们将moduleid视为系统关键字,编译器应该将代码使用情况标记为错误。现在它导致了意外的行为。@McLac是的,您的意见是正确的。我已经在Angular github中提交了一个问题来检查它,因为我对此也感到困惑,[如果它是一个bug,请您指出它非常好]。问题链接更像是一个cli问题,因为它为一些贡献者所关注