[解決済み] Angular2 - プライベート変数は、テンプレートでアクセス可能であるべきですか?
2022-04-26 02:59:44
質問
変数が宣言されている場合
private
コンポーネントクラスで、そのコンポーネントのテンプレートにアクセスできるようにする必要がありますか?
@Component({
selector: 'my-app',
template: `
<div>
<h2>{{title}}</h2>
<h2>Hello {{userName}}</h2> // I am getting this name
</div>
`,
})
export class App {
public title = 'Angular 2';
private userName = "Test Name"; //declared as private
}
解決方法は?
いいえ、テンプレートでプライベート変数を使用するべきではありません。
が好きなのですが drawmooreの回答 概念的には完璧なロジックだと思いますが、実装的には間違っています。テンプレートはコンポーネントクラスの中に存在するのではなく、その外側に存在するのです。以下を見てください。 このレポ をご覧ください。
なぜ動くかというと、TypeScriptの
private
キーワードは、実際にはメンバーをプライベートにはしません。ジャストインタイムのコンパイルは実行時にブラウザで行われ、JSにはプライベートメンバーという概念がない(まだ?) 謝辞は
サンダー・イライアス
正しい道に導いてくれた
と
ngc
とAhead-of-Timeコンパイルで、テンプレートからコンポーネントのプライベートメンバーにアクセスしようとすると、エラーが発生します。デモ用レポをクローンして
MyComponent
を実行すると、コンパイルエラーが発生します。
ngc
. 以下もその例です。
回答
Ahead-of-Timeコンパイルに特有のものです。
関連
-
[解決済み】tsconfigファイルにおけるesModuleInteropの理解
-
[解決済み】アンギュラーコンポーネントにサービスを注入しようとするとエラー "EXCEPTION: Can't resolve all parameters for component"、なぜ?
-
[解決済み] Angular 4: コンポーネントファクトリが見つかりません。@NgModule.entryComponents に追加しましたか?
-
[解決済み] Angular 2の@ViewChildアノテーションがundefinedを返す
-
[解決済み] TypeScriptの "*.d.ts "について
-
[解決済み] Angularで変更検知を手動でトリガーする
-
[解決済み] オプションのパラメータを省略しながら、他のオプションのパラメータを渡すには?
-
[解決済み】オブジェクトの配列を定義するにはどうしたらいいですか?
-
[解決済み】引数として渡されたTypeScriptオブジェクトにデフォルト値を設定する
-
[解決済み】TypescriptのArray<Type> VS Type[]について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ts1206 デコレーターはここでは無効です、Angular 2。
-
[解決済み] グローバル定数の定義
-
[解決済み] 未使用のパラメータに対する型チェックをスキップする
-
[解決済み] TypeScriptでパラメータとして強く型付けされた関数は可能か?
-
[解決済み] クラス定数を実装するには?
-
[解決済み] タイプスクリプトのレコードタイプとは何ですか?
-
[解決済み】TypeScriptのインターフェースと型について
-
[解決済み】TypeScriptの関数のオーバーローディング
-
[解決済み】TypeScriptとフィールドイニシャライザー
-
[解決済み] 「Angularコンポーネントのprivateとpublicについて