Angular 为什么要使用服务和令牌/OpaqueToken来获取窗口对象
前几天我和一位不喜欢我的代码的同事交谈。在我的角度分量中,我访问Angular 为什么要使用服务和令牌/OpaqueToken来获取窗口对象,angular,typescript,angular2-opaquetoken,Angular,Typescript,Angular2 Opaquetoken,前几天我和一位不喜欢我的代码的同事交谈。在我的角度分量中,我访问窗口对象,如soprivate myWindow=window 他告诉我一个更好的方法是使用一个服务和一个令牌/OpaqueToken(我不知道什么是OpaqueToken),诸如此类 import { Injectable, OpaqueToken, } from '@angular/core'; export const WindowToken = new OpaqueToken('app.window');
窗口
对象,如soprivate 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();
}
然后我可以注入服务,然后像这样得到对象
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();
}
这一切看起来都很好,很干净,但我不明白使用令牌(或令牌做什么)和服务的优势,而不仅仅是通过窗口对象分配变量-有人能告诉我为什么使用服务和令牌是更好的做法吗?这可能会消除您的疑虑: