問題タブ [injectable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
20177 参照

angular - jasmine angular2 を使用して注入されたプライベート サービスによる単体テスト

angular サービスの単体テストをしようとすると問題が発生します。このサービスが、挿入された別のサービスを適切に呼び出していることを確認したいと考えています。

ServiceInjected を注入するこの ServiceToTest があるとします。

ServiceToTest .service.ts

ServiceInjected.service.ts

これらのサービスを使用して、単体テストを作成します。

テストが陽性であることを期待していましたが、次のエラーが表示されます。

spy configure が呼び出されたと予想されます。

一方、注入されたサービスを次のように public に設定すると、問題なく動作します。

0 投票する
1 に答える
74 参照

angular - Angular2 では、注入されたサービスの値を使用して静的変数を設定するにはどうすればよいですか?

データを提供するサービスがありますconfig

そして今、オブジェクトを使用して、別のサービスで静的変数を設定したいと考えています。

ConfigDataコンストラクターに追加するとAnotherService、時間内に静的変数に値が割り当てられないため、役に立ちません。それらは、他の場所で使用されるまでにはすでに「未定義」になっています。

これを達成する方法はありますか?

0 投票する
0 に答える
2172 参照

angular - Angular: 抽象クラスを持つ Injectable() デコレーター

私は奇妙な状況に遭遇し、それが正しいかどうか議論したい. (最後に小さな質問の更新も探してください)

angular 4.3には、いくつかの角度コンポーネントによって拡張された抽象クラスがあります。次のようになります。

親クラス SidePanel にいくつかの一般的な機能を追加したいのですが、それには angular の Injector にアクセスできる必要があります。だから私はこのようなことをしたい:

これを可能にするために、子から Injector を渡すことができます。

しかし、私には子供が多すぎるため、そうしたくありません。その場合、それらすべてにインジェクターを追加する必要がありました。だから私は簡単な解決策を見つけました(しかし、それが正しいかどうかはわかりません):

その結果、子クラス (コンポーネント) は、Injector を注入して渡すためだけに独自のコンストラクターを持つ必要はなく、すべて正常に動作します。しかし、抽象クラスに Injectable() デコレータを適用するのは奇妙に見えます。

それは正しいですか?

ご意見をお寄せいただきありがとうございます。

更新 14.03:

判明したように、上記の状況では、Injectable の代わりに「空の」Component デコレータを使用できます。

メタデータが空のコンポーネントは何を意味するのか、それを使用するのは正しいのか、すべてのパラメーターがオプション (セレクターも含む) なのはなぜですか?