2017-09-05 10 views
1

ビューから排他的に使用されるng2プロパティとメソッドの推奨されるアクセス修飾子は何ですか? Angular2:ビューでアクセスするタイプスクリプトのプロパティと関数に推奨されるアクセス修飾子は何ですか

は、私がプライベート使用してますが、この記事全体を実行、それはそれを阻止されています: Angular2 - should private variables be accessible in the template?

を同時に、国民がないと思えるようにすべてをマーキングし、どちらも保護されません。

答えて

0

パブリックのように思われるのは、それが何にでもアクセスできるという意味で望ましいとは思われません。しかし、事実はそうではありません。

コンポーネントをインスタンス化してそのプロパティとメソッドを呼び出すことは意味がありません。むしろ、コンポーネントのクラスの目的はテンプレートをサポートすることです。

子コンポーネントがある場合は、そのプロパティで@Inputを使用します。

子コンポーネントを取得し、そのプロパティまたはメソッドにアクセスするには、@ViewChildまたは@ViewChildrenを使用できます。私はちょうどこれを試して、実際には公共のプロパティにアクセスすることができ、私的なプロパティはありません。しかし、これは私が考えることができる唯一のシナリオです。

考えている別のシナリオがありますか?

+0

お返事ありがとうございます。私はビューで要素の表示/非表示に使用されるフィールドを持っています。その値は@Inputのセッターによって設定されます。私は、その値がこの設定者によって排他的に設定されるはずである場合、このプロパティをパブリックにすることを嫌います。私はコードの純度を推測する、私はこのプロパティのセッター/ getters事件でも続けることができます。 – amy8374

0

現在、 'public'はおそらく理想的ですが、 'protected'はALS警告メッセージを表示しませんが、AOTコンパイルを使用する場合は避けるべきです。

Angular Language Service(コードでエラー/警告を強調表示するためにIDEで使用される可能性があります)は、「識別子は、コンポーネントのプライベートメンバーを参照します」という警告を発行します。 。

警告メッセージを含むこのトピックに関するstackoverflow answer for a similar questionも警告が存在し、AOTと非AOTの「プライベート」などでのアクセス修飾子との間に微妙な対「国民に話す理由を説明できるかもしれないa related access/AOT git hub issue議論を指しTypeScriptとJavaScript。

私はAhead-of-Time(AOT)のコンパイルに関心がない限り、私のIDEで警告を回避するのに成功しましたが、これは他の場所では推奨されていません。

関連する問題