从视图中专门使用的ng2属性和方法的推荐访问修饰符是什么?
我一直在使用私人信息,但是在这篇文章中遇到了阻碍它:Angular2 - should private variables be accessible in the template?
与此同时,将所有内容标记为公开似乎并不正确,也没有受到保护。
答案 0 :(得分:0)
起初,看起来公众不会被期望,因为这意味着它可以被任何东西访问。但问题是,它们并非如此。
实例化组件以调用其属性和方法没有意义。相反,组件类的目的是支持模板。
如果您有子组件,则使用@Input。
获取其属性您可以使用@ViewChild
或@ViewChildren
来获取子组件并访问其属性或方法。我刚试过这个,确实公共属性是可访问的,私有属性不是。但这是我能想到的唯一场景。
您还在考虑其他情景吗?
答案 1 :(得分:0)
目前,'public'可能是理想的,虽然'protected'会抑制ALS警告信息,但如果您依赖AOT编译则应该避免。
Angular Language Service(可能由IDE用来突出显示代码中的错误/警告)在使用private作为访问修饰符时发出警告:“Identifier”指的是组件的私有成员“对于会员。
关于此主题的stackoverflow answer for a similar question涉及警告消息还指向a related access/AOT git hub issue讨论,该讨论可以解释警告存在的原因,并在AOT和非AOT中对'public'与'private'说话以及TypeScript与JavaScript中的访问修饰符之间的细微差别。
只要我不关心Ahead-of-Time(AOT)编译,我就成功地在使用'protected'时避免在我的IDE中发出警告,但我从未在其他地方看到过这种建议。< / p>