[解決済み] コンポーネントではなくクラスにサービスをインジェクトする方法
2022-12-19 08:21:01
質問
あるサービスにインジェクトしたいのですが、そのクラスは コンポーネントではなく .
例えば
マイサービス
import {Injectable} from '@angular/core';
@Injectable()
export class myService {
dosomething() {
// implementation
}
}
MyClass
import { myService } from './myService'
export class MyClass {
constructor(private myservice:myService) {
}
test() {
this.myservice.dosomething();
}
}
試してみましたが、うまくいきません。serviceはコンポーネントかサービスのみで使用する必要があるようです。
普通のクラスでサービスを使う方法はありますか? それとも普通のクラスでサービスを使うのは悪いことですか?
ありがとうございます。
どのように解決するのですか?
インジェクションは、Angularsの依存性注入(DI)によってインスタンス化されたクラスに対してのみ機能します。
-
必要なのは
-
追加する
@Injectable()
にMyClass
であり -
提供する
MyClass
のようにproviders: [MyClass]
のように、コンポーネントまたは NgModule の中に記述します。
-
追加する
次に
MyClass
をどこかに注入すると
MyService
のインスタンスが
MyClass
に渡されます。
- のようなカスタムインジェクタを設定する方法もあります。
constructor(private injector:Injector) {
let resolvedProviders = ReflectiveInjector.resolve([MyClass]);
let childInjector = ReflectiveInjector.fromResolvedProviders(resolvedProviders, this.injector);
let myClass : MyClass = childInjector.get(MyClass);
}
このように
myClass
は
MyClass
のインスタンスで、Angulars DIによってインスタンス化されます。
myService
に注入されます。
MyClass
に注入されます。
参照
ディレクティブの中で手動でInjectorから依存性を取得する
- さらにもう一つの方法は、自分でインスタンスを作成することです。
constructor(ms:myService)
let myClass = new MyClass(ms);
関連
-
[解決済み】アンギュラーコンポーネントにサービスを注入しようとするとエラー "EXCEPTION: Can't resolve all parameters for component"、なぜ?
-
[解決済み] Angular 2の「コンポーネント」は既知の要素ではありません。
-
[解決済み] コンポーネントテンプレートで要素を選択するには?
-
[解決済み] Angularのルーティングされたコンポーネントにデータを渡すにはどうしたらいいですか?
-
[解決済み] Angularでコンポーネントをリフレッシュする方法
-
[解決済み] Angular / Angular Materialでmat-horizontal-stepperのステップをプログラムで移動させることは可能ですか?
-
[解決済み] RxJSのmap演算子でエラーを出す方法 (angular)
-
[解決済み] Angular 2で入力タグのファイルタイプで選択されたファイルをリセットする方法は?
-
[解決済み] ngFor を使用して、Typescript Enum を文字列の配列として反復処理するにはどうすればよいですか?
-
[解決済み] ng-forOf」は既知のネイティブプロパティではないため、バインドできない [重複] 。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Angular2でNgForがPipeでデータを更新しない。
-
[解決済み] Angular2 bodyタグにクラスを追加する
-
[解決済み] Error: モジュールによってインポートされた予期しない値 'undefined'。
-
[解決済み] Reactive Forms - フィールドをタッチしたものとしてマークする
-
[解決済み] angular-cli が HTTPS で ng serve するようにする。
-
[解決済み] 子ルートから親ルートに移動するにはどうしたらいいですか?
-
[解決済み] Typescript におけるインターフェースとクラスの違い
-
[解決済み] 角度の2つのスイッチケース値
-
[解決済み] 角度換算2
-
[解決済み] Typescriptで文字列をbooleanに変換する方法 Angular 4