如果变量在组件类上声明为私有的,那么我应该能够在该组件的模板中访问它吗?
@Component({ selector: 'my-app',template: ` <div> <h2>{{title}}</h2> <h2>Hello {{userName}}</h2> // I am getting this name </div> `,}) export class App { public title = 'Angular 2'; private userName = "Test Name"; //declared as private }
编辑:此答案现在不正确。当我发布它的时候,没有关于这个话题的官方指导,但正如在解释@ Yaroslov的(优秀,正确的)答案,不再是这种情况:Codelizer现在警告和AoT编译将失败对组件模板中的私有变量的引用。也就是说,在概念层面上,这里的一切仍然有效,所以我会离开这个答案,因为它似乎是有帮助的。
是的,这是预期。
请记住,私有和其他访问修饰符是Typescript构造,而组件/控制器/模板是角色构造,Typescript什么也不知道。访问修饰符控制类之间的可见性:使字段私有防止其他类访问它,但模板和控制器是类中存在的东西。
这在技术上不是真的,但是(代替理解类如何与装饰器及其元数据相关联),以这种方式思考它可能是有帮助的,因为重要的事情(IMHO)是从对模板和控制器的思考转变为单独的实体将它们视为组件构造的统一部分 – 这是ng2心理模型的主要方面之一。
以这种方式思考,显然我们期望组件类中的私有变量在其模板中可见,同样的原因,我们期望它们在该类的私有方法中可见。