Angular2:将在视图中访问的typescript属性和函数的推荐访问修饰符是什么

时间:2017-09-05 20:29:02

标签: angular typescript

从视图中专门使用的ng2属性和方法的推荐访问修饰符是什么?

我一直在使用私人信息,但是在这篇文章中遇到了阻碍它:Angular2 - should private variables be accessible in the template?

与此同时,将所有内容标记为公开似乎并不正确,也没有受到保护。

2 个答案:

答案 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>