問題タブ [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.

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

javascript - Angular2 インポート構文: "import * as" 対 "インポート {}"

モジュールをインポートできる2つの異なる方法を見ています。

ほとんどのインポートは次のようになります 'import {<something>} (つまりimport { Component } from '@angular/core';)

他のものは次のようにインポートします'import * as <something>(つまりimport * as _ from "lodash";

Angular2モジュールではなく、タイピング(つまりtypings install lodash=npm --save)を使用してバニラjsモジュールをプロジェクトにインポートするときに、後者の方法を使用してインポートすることを理解していることから、それは正しいですか?

私の仮定が正しければ、インポートされたクラス/モジュールの両方を同じ方法で使用していますか(つまり、コンポーネントクラス内で使用するように宣言するとき)?

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

angular - トークンが複数の値になる可能性がある場合、 Injector.get() を介して親コンポーネントを取得します

私がやろうとしていること:

  • 単一のディレクティブを使用する複数の異なるコンポーネント
  • ディレクティブが呼び出されるとき、ディレクティブが呼び出される親/ホスト コンポーネントを取得できる必要があります。

Plnkr -> http://plnkr.co/edit/Do4qYfDLtarRQQEBphW3?p=preview

angular.io のドキュメントを見ると、コンストラクターで親コンポーネントを取得するために「インジェクター」を使用できることがわかりました。

そうすることで、Injector Object を取得します。私が言えることから、私はそれを使用することになっています

私が把握するのが難しい問題は、Angular で提供されている例では、トークンで提供するコンポーネントのタイプを知っていると仮定していることです。すなわち:

pnkr の例では、テンプレートに 2 つのコンポーネントがあります。

私の質問は、「mydirective.ts」にあります。親が「my-image」コンポーネントか「my-box」コンポーネントかがわからない場合、「injector.get()」をどのように活用できますか。

提供されているサンプルでは、​​ディレクティブは「ondrag()」でトリガーされます。ログ メッセージについては、コンソールを表示します。

どんな支援も感謝しています。

よろしくお願いします。

0 投票する
2 に答える
7576 参照

angular - ng2 - テンプレートに基づいてコンポーネントを動的に作成する

私は、動的コンポーネントを作成するための Angular 2 API を検討してきましたがComponentResolverDynamicComponentResolverそれらの API が提供するものとは異なることを念頭に置いています。

NG2 でクラス名の文字列に基づいてコンポーネントを作成する方法はありますか?

たとえば、構成可能なチャート ダッシュボードを構築しています。各ユーザーのレイアウトはデータベースに保存され、ここに 2 つの折れ線グラフ、そこに 3 つの棒グラフなどが必要であることが示されます。

このデータを json としてロードすると、次のようになります。

typeリフレクティブに作成したいコンポーネントのクラス名はどこにありますか。

これまでのところ、次のものがあります。

しかし、全体のアイデアは、の必要性を排除することですchartMap。型への参照がなくても、文字列に基づいてこのクラスを反射的に作成するにはどうすればよいですか?

0 投票する
2 に答える
296 参照

angular - ライブラリに構成を提供するAngular2

私は Angular 2 のライブラリ サービスを作成しています。呼び出し元のアプリケーションが何らかの構成を提供できるようにしたいと考えています。基本クラスで抽象プロパティを作成することもできましたが、これにより、呼び出し元のアプリケーションが複数の場所で構成を定義しなければならなくなります。

Angular2 アプリケーション内では、メイン アプリケーション モジュールでこのような手法を使用します

その後、 @Inject('app.config') を使用して、必要な場所に構成を挿入できます。ただし、私が書いているライブラリは拡張する基本クラスを定義しているため、呼び出し元のアプリケーションが値を注入して super() 経由で転送する必要があるため、この値をコンストラクターに注入したくありません。

ReflectiveInjector クラスを見てきましたが、文字列ではなく型が必要です。

どうすればこれを達成できますか?

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

angular - サブコンポーネントの DI エラー

会社の内部ツールとして (本当に) 巨大な Angular 2 アプリケーションを開発しています。アプリケーションは、特定のユーザーのみがアクセスできるさまざまなサブアプリケーションで構成されています。

これを行うために、オブザーバブルを返す CanActivate クラスを使用して、サービスの 1 つにクエリを実行してアクセスを確認しようとしましたが、サービスをインポートしようとすると、クラスのコンストラクターが無効になります。

そこで、アプリケーション自体にテストを移動しましたが、同じように失敗しました。したがって、問題はサービス自体にある可能性があります。非常に奇妙なことは、apps コンテナがまったく問題なく同じサービスを使用していることです (このサービスは、利用可能なアプリケーションのリストを提供し、apps メニューを生成しています)。

問題はコンポーネントの読み込み順序にある​​と確信していますが (おそらくHttp関連しています)、どこを見ればよいかわかりません。悲しいことに、アプリケーションの複雑さを考えると、問題を特定するのは非常に難しく、何をすべきかわかりません。

似たような問題を探してみると似たような状況が見つかりましたが、その間に Angular2 の開発が進み、それらの解決策は役に立たなくなりました。