私はIonicを使って最初のAngular 2アプリを構築しており、いくつかのサービスを構築しています。このチュートリアルでは静的メソッドを使用していませんが、私にとっては、静的メソッドとプロパティが使用するようになっているようです。静的メソッドを使用しないように、次のようになります:角度2のサービスに静的クラスメソッドを使用しない理由はありますか?
import {MyService} from "../services/MyService";
@Component({
templateUrl:"page.html",
providers: [MyService]
})
export class MyNewClass{
constructor(private myService: MyService){}
//to use:
this.MyService.get()
}
VS
import {MyService} from "../services/MyService";
@Component({
templateUrl:"page.html"
})
export class MyNewClass{
constructor(){}
//to use:
MyService.get()
}
今私のユースケースでは、MyService
データは、全体のアプリ間で変更されません。データを一度に読み込み、アプリ全体ですべてを使用する必要があります。 MyServiceに、他のすべてのクラスが使用する情報を含む静的配列を持たせたいと思います。私の見解では、これはアプリケーション全体で1つのインスタンスが存在することは間違いありません。また、私はproviders: [MyService]
を書く必要はなく、コンストラクタに注入する必要はありません。コンストラクタのパラメータを長さのために読めないようにしたくないので、私は非常に良いと思います。これに何か問題はありますか?
標準的な議論のように私には思われます:このサービスを使うものをどうやってテストしますか?あなたは偽のバージョンのためにそれを交換することはできますか? –
@Niklas B.テストするのはかなり簡単だと思われます。データの一部をハードコードして返すだけです。しかし、私はフレームワークのテストで多くの経験を持っていないので、それが問題であるかどうかを私に教えていただきたいと思います。 – user3413723
私はあなたのサービスが、リクエストにモックレスポンスを返すことができるように構成可能かどうか、そしてそれを使用するコンポーネントはテスト可能であると思います。しかし、サービス自体はあまりに複雑すぎるようです –