初めてangular-redux
ライブラリについて学んだとき、ライブラリの最も魅力的な部分は@select
デコレータだったと思います。毎回store service
を注入する必要はありませんでした私は店から選択したい。角度サービスのシングルトンインスタンスを保存する練習
デコレータはどのようにしてそのサービスにアクセスできますか?
私はソースコードを調査し、@selectとNgRedux (the store service)コードを見つけました。
サービスが初期化されると、サービスのstatic instance
が保存され、decorator
はこのインスタンスにアクセスします。
私はアイデアを気に入っていると私は私のサービスのためのdecorators
とrxjs operators
を作成するために、それを自分自身を使用していたことから、このような行為がどのように許容知りたいと思ったが、シングルトンを節約するアイデアは私のために、まだかなり独特ですそれは奇妙なハックのように感じる。
この練習がどれほど受け入れられるか、そしてこれを避けるためにAngular
のDependency Injection
を使用する方法があるかどうか、あなたの意見が大好きです。
読んでいただきありがとうございます!
私の問題は、コンポーネント、ディレクティブ、パイプ、またはサービスにはありません。すべてが '@Injectable'です。私の問題は、 'decorator'や' rxjs演算子 'のような角のないもので、人々がコードをカスタマイズするために使用するものです。私はこのメソッドが動作することを知っています、それは私のコードで不思議ですが、私はこれを行うためのより多くの 'DI'-yの方法が存在することを望みました。 –
AngularのDIは、プロキシやインターセプタに似た機能を提供せず、プロパティの注入をサポートしていないため、コンストラクタを経由せずにインジェクタ参照やサービスを取得することはできません。デコレーターを使用できるサービスを提供するためには、サービスのために工場を使用しなければならず、デコレーターを使用するサービスごとに配管を行う必要があります。カスタムrxjs演算子でサービスを使用する唯一のクリーンな方法は、それらを直接パラメータとして渡すことです。したがって、クリーンなデザインと使い勝手の間の妥協です。 – kemsky