Angular2/CLI是moduleId保留字吗?
我获得了最新的cli并创建了一个新的测试项目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 =
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问题,因为它为一些贡献者所关注