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

问题描述 投票:3回答:2

对于要从​​视图中专门使用的ng2属性和方法,建议的访问修饰符是什么?

我一直在使用私人,但碰到这个帖子,劝阻它:Angular2 - should private variables be accessible in the template?

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

angular typescript
2个回答
0
投票

起初看起来似乎不需要Public,因为这意味着它可以被任何东西访问。但问题是,它们并非如此。

实例化组件以调用其属性和方法没有意义。相反,组件类的目的是支持模板。

如果您有子组件,则使用@Input获取其属性。

您可以使用@ViewChild@ViewChildren来获取子组件并访问其属性或方法。我刚试过这个,确实公共属性是可访问的,私有属性不是。但这是我能想到的唯一场景。

您还在考虑另一种情况吗?


0
投票

目前,'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中发出警告,但我从未在其他地方看到这个推荐。

© www.soinside.com 2019 - 2024. All rights reserved.