[解決済み] Angularのビュープロバイダーとは何ですか?また、プロバイダとビュープロバイダの違いは何ですか?
2023-02-09 09:33:32
質問
以下のコードにおけるviewProvidersとは何でしょうか?また、プロバイダとどう違うのでしょうか?
class Greeter {
greet(name:string) {
return 'Hello ' + name + '!';
}
}
@Component({
selector: 'greet',
viewProviders: [
Greeter
],
template: `<needs-greeter></needs-greeter>`
})
class HelloWorld {
}
どのように解決するのですか?
あなたの例では、プロバイダとビュープロバイダの間に違いはありません。なぜなら、HelloWorldのテンプレートでは、プロバイダとビュープロバイダの間に
<ng-content>
. の中にコンテンツを投影するのであれば
<ng-content>...</ng-content>
の中にコンテンツを投影していた場合、投影されたコンテンツに Greeter を注入することはできません。
viewProviders: [Greeter]
もし、投影されたコンテンツに Greeter を潜在的に注入させたいのであれば
providers: [Greeter]
そこで
viewProviders
は提供者を投影されたコンテンツ以外の子に限定しているのに対し
providers
は全ての子がプロバイダを使用できるようにします。 その値として
viewProviders
によって、投影されたコンテンツがサービスに干渉するのを防ぐことができ、これは特にライブラリで有用でしょう。
関連
-
[解決済み] Angular 2の@ViewChildアノテーションがundefinedを返す
-
[解決済み] コンストラクタとngOnInitの違いについて
-
[解決済み] Angular 2+でngShowとngHideに相当するものは何ですか?
-
[解決済み] コンポーネントテンプレートで要素を選択するには?
-
[解決済み] npmパッケージの "at"(@)プレフィックスの意味は何ですか?
-
[解決済み] NgModuleにおける宣言、プロバイダ、インポートの違いは何ですか?
-
[解決済み】PromiseとObservablesの違いは何ですか?
-
[解決済み] Angular 4/5/6 グローバル変数
-
[解決済み] .tsファイルはTypeScriptのコンパイルの一部ですが、使用されていませんという警告を消すには?
-
[解決済み] angular2でdata-*属性にバインドする方法は?重複
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] コンポーネントクラスからテンプレート参照変数にアクセスする
-
[解決済み] パイプ ' ' が見つかりません。
-
[解決済み] 別のプロセス(id #######)が現在 ngcc を実行しています。
-
[解決済み] Karma/Jasmineのテストで「[object ErrorEvent] thrown」エラーが発生した場合、どのようにデバッグすればよいですか?
-
[解決済み] FormGroupとFormArrayの使い分けは?
-
[解決済み] どのようにしてangular 4のurlからparamを取得するのですか?
-
[解決済み] Angular 4.3 - HttpClient set params
-
[解決済み] Typescriptで文字列をbooleanに変換する方法 Angular 4
-
[解決済み] angularで1つの要素に複数のテンプレートバインディングを適用する方法 [重複].
-
[解決済み] angular2でdata-*属性にバインドする方法は?重複