如果private在组件类上声明了变量,我是否应该能够在该组件的模板中访问它?@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}
3 回答
守着一只汪
TA贡献1872条经验 获得超3个赞
不,您不应该在模板中使用私有变量。
虽然我喜欢drewmoore的答案,并且看到了完美的概念逻辑,但在实现上却是错误的。模板不存在于组件类中,而是在它们之外。查看此回购作为证明。
它起作用的唯一原因是因为TypeScript的private关键字并未真正使成员私有。即时编译在运行时在浏览器中进行,并且JS没有任何私有成员的概念(还可以吗?)。幸得桑德埃利亚斯为把我在正确的轨道上。
使用ngc和提前编译,如果尝试从模板访问组件的私有成员,则会出现错误。克隆演示仓库,将MyComponent成员的可见性更改为private,运行时将出现编译错误ngc。这也是提前编译的特定答案。
- 3 回答
- 0 关注
- 1239 浏览
添加回答
举报
0/150
提交
取消