2017-09-05 56 views

回答

0

起初看起来公众不会被期望,因为那意味着它可以被任何东西访问。但事实是,他们不是真的。

永远实例化一个组件来调用它的属性和方法是没有意义的。相反,组件类的目的是支持模板。

如果您有一个子组件,您可以使用@Input获取其属性。

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

您还在想另一种情况吗?

+0

感谢您的回答。我有一个视图用来显示/隐藏元素的字段,其值由@Input的setter设置。我不喜欢公开这个财产,当它的价值应该由这个制定者完全设定时。我想代码纯度,我可以继续与这个属性的setter/getters事情。 – amy8374

0

目前,'public'可能是理想的,虽然'protected'会抑制ALS警告消息,但如果依赖AOT编译应该避免。

Angular Language Service(您的IDE可能会使用它来突出显示代码中的错误/警告)会发出警告:“标识符”指组件的私有成员“当使用私有作为成员的访问修饰符时。

在这个题目涉及的警告消息还指出,a related access/AOT git hub issue讨论这可以解释为什么存在警告,会说一个stackoverflow answer for a similar question以“公”与“私”在访问修饰符之间AOT和非AOT以及细微之处TypeScript与JavaScript。

只要我不关心AOT编译,我在使用'protected'时避免了在IDE中的警告,但我从未在其他地方看到过这个建议。