先日、私のコードが気に入らない同僚と話していました。私のAngularコンポーネントでは、そのwindow
ようにオブジェクトにアクセスしますprivate myWindow = window;
彼は、より良い方法は、サービスとトークン/ OpaqueToken (OpaqueToken が何であるかはわかりません) を使用することだと言いました。
import {
Injectable,
OpaqueToken,
} from '@angular/core';
export const WindowToken = new OpaqueToken('app.window');
@Injectable()
export class WindowService {
getWindow(): Window {
return window;
}
}
そして、サービスを注入してオブジェクトを取得できます...
myWindow: Window;
constructor(@Inject(WindowToken) windowRef: WindowService) {
this.myWindow = windowRef.getWindow();
}
それはすべて非常に素晴らしくきれいに見えますが、オブジェクトに変数を割り当てるだけでなく、トークン(またはトークンが何をするか)とサービスを使用する利点を理解していませんwindow
-サービスとトークンを使用する方が良い方法である理由を誰かに教えてもらえますか?