2

前几天我正在和一位不喜欢我的代码的同事交谈。在我的 Angular 组件中,我window像这样访问对象private myWindow = window;

他告诉我更好的方法是使用 Service 和 Token / 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对象分配变量的优势 - 有人可以告诉我为什么使用服务和令牌是更好的做法?

4

0 回答 0