問題タブ [angular2-injection]
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.
angular - ブートストラップなしでAngular2インジェクトHttp
環境:
REST Api の POST リクエストを形成するクラスがあります。それを requesterと呼びましょう。私のアプリで行われたすべての ajax 呼び出しは、これを介して送信されます。したがって、HTTPを介して提供したくないため、グローバルになり、リクエbootstrap(foo, [HTTP_PROVIDERS]);
スターに注入する必要があります
コード:
エラー:
元の例外: HTTP のプロバイダーはありません! (リクエスタ -> Http)
javascript - コンポーネントがサービスの同じインスタンスを使用して互いに通信できるように、サービスプロバイダーをAngular 2階層のどこに配置しますか?
関連する質問:
Observable は angular2 で次の値を受け取らない
angular2 でサービス エラーのプロバイダーがありません。親コンポーネントに挿入する必要があるのはなぜですか?
angular2の他のコンポーネントへの観察可能なトークを使用して、次の値を受け取りません
setCurrentPlaylists 関数を持つ PagesService があります。この関数は他のコンポーネントからトリガーされ、Playlists タイプの値を受け取り、次の関数を使用してこの値をコンソール ログに記録します。
ページサービスのコード全体は次のとおりです。
ページ コンポーネントの私のコードは次のとおりです。
setCurrentPlaylists 関数をトリガーすると、プレイリストがページ コンポーネントに渡されませんでした。渡された値を使用して、ページ コンポーネントのプレイリストを更新する必要があります。
これは、setCurrentPlaylsts 関数をトリガーした後のコンソール出力です。ページ コンポーネントからのメッセージはありません。
どんな提案でも大歓迎です!
このコンポーネントから setCurrentPlaylists 関数を呼び出します
unit-testing - Angular 2 rc5 、インジェクションを使用するパイプの単体テストの問題
angular2 rc 5 を使用しています。json から値を取得するカスタム パイプを作成しました。カスタム パイプ :literal.pipe.ts は次のようになります。
MessageService.ts :
Bundle.json にはキーと値のペアがあります。
liteServer を使用して単体テストを実行しています。私の unitTests.html:
literal.pipe.spec.ts は次のとおりです。
npm test を実行し、ブラウザーで開く unitTests を表示すると、次の例外が発生するため、仕様ファイルのどこかで問題が発生しているようです。
これを機能させるには、何を変更する必要がありますか。
angular - Angular2: コンストラクターでプロバイダーをインスタンス化するためにプライベート アクセス指定子を使用する理由
コンストラクターでプロバイダーをインスタンス化するためだけにプライベート アクセス指定子を使用するのはなぜですか? プライベート アクセス指定子のみを使用する特定の理由はありますか?
個人注射
公衆注射
angular - Angular2 RC6 HttpModule 手動インジェクション
プロジェクトを angular2 RC4 から RC6 に移行しています。必要なカスタム フォーム バリデーターがありますHttp
。移行前は を と一緒に使用しReflectiveInjector
ていましたHTTP_PROVIDERS
が、RC6 ではHTTP_PROVIDERS
非推奨であり、存在しないため、これはもはや不可能です。これは Validator の静的メソッドです。
に置き換えるだけでは機能HTTP_PROVIDERS
しませんでした。テストに関して、 stackoverflow ( NG2 RC5: HTTP_PROVIDERS is deprecatedHttpModule
)で同様の問題を見つけましたが、唯一の答えはテストに固有のものです。
このカスタム Validator に別の解決策またはより良い解決策がある場合、手動で「注入」する方法、Http
またはHttpModule
RC6 を使用する方法を教えてください。
前もって感謝します。
更新:checkVat
メソッドは静的です。そのため、ReflectiveInjector を使用する必要があり、他の場所と同様に、コンストラクターを介して注入するだけではありません。カスタム Validator は次のように使用されます。
UPDATE2: Günther Zöchbauer の回答の助けを借りて、次のようにコードを変更して、静的関数なしで動作し、手動インジェクションを必要としないようにしました。
バリデーター:
輸出クラスVatValidator {
}
FormControl を持つコンポーネントで:
angular - テスト - (ClassName) のすべてのパラメーターを解決できません
環境
ApiService
独自のシリアライザーとその他の機能を使用しながら、カスタム API クエリを処理できるクラスを作成しました。
ApiService
のコンストラクターの署名は次のとおりです。
MetaManager
API のメタデータを処理する注入可能なサービスです。ApiConnectorService
Http
カスタムヘッダーと署名システムを追加するためのラッピングサービスです。EventDispatcher
は基本的に Symfony のイベント ディスパッチャー システムであり、typescript で記述されています。
問題
をテストするときApiService
は、 で初期化を行いますbeforeEach
。
そしてそれはうまくいきます。
次に、 用の 2 番目のスペック ファイルを次のように追加ApiConnectorService
しbeforeEach
ます。
そして、すべてのテストが次のエラーで失敗します。
エラー: ApiService のすべてのパラメーターを解決できません: (MetaManager、?、EventDispatcher)。
api-connector-service.spec.ts
ロードしたテストから(ApiConnectorService
の仕様ファイル)を削除すると、ApiService
のテストは成功します。api-service.spec.ts
ロードしたテストから(ApiService
の仕様ファイル)を削除すると、ApiConnectorService
のテストは成功します。
なぜこのエラーが発生するのですか? 私の 2 つのファイル間のコンテキストが競合しているように見えますが、これを修正する理由と方法がわかりません。