对于要从视图中专门使用的ng2属性和方法,建议的访问修饰符是什么?
我一直在使用私人,但碰到这个帖子,劝阻它:Angular2 - should private variables be accessible in the template?
与此同时,将所有内容标记为公开似乎并不正确,也没有受到保护。
起初看起来似乎不需要Public,因为这意味着它可以被任何东西访问。但问题是,它们并非如此。
实例化组件以调用其属性和方法没有意义。相反,组件类的目的是支持模板。
如果您有子组件,则使用@Input获取其属性。
您可以使用@ViewChild
或@ViewChildren
来获取子组件并访问其属性或方法。我刚试过这个,确实公共属性是可访问的,私有属性不是。但这是我能想到的唯一场景。
您还在考虑另一种情况吗?
目前,'public'可能是理想的,虽然'protected'会抑制ALS警告消息,但如果您依赖AOT编译则应该避免。
Angular Language Service(可能由IDE用于突出显示代码中的错误/警告)发出警告:“标识符”指的是组件的私有成员,当使用private作为成员的访问修饰符时。
关于此主题的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中发出警告,但我从未在其他地方看到这个推荐。