请帮助我,我有一个使用angular universal(angular 8和NestJs)的应用程序,我试图在一个angular component()中访问会话存储。onInit
)但NestJs给我的是以下内容。ERROR ReferenceError: sessionStorage is not defined
. 在看了 棱角分明 然后我尝试了以下内容。
export const BROWSER_STORAGE = new InjectionToken<Storage>('Browser Storage', {
providedIn: 'root',
factory: () => window.sessionStorage
});
然后在我的组件中。
constructor(@Inject(BROWSER_STORAGE) public storage: Storage) {}
ngOnInit(): void {
this.storage.setItem('store', 'store');
}
现在得到以下错误 ERROR TypeError: this.storage.setItem is not a function
. 如何使用angular universal(angular 8和NestJs)获取会话存储数据。
谢谢David。要使NestJs不执行 this.storage.setItem('store', 'store');
不得不注射 PLATFORM_ID
并使用 isPlatformBrowser
如下所示。
constructor(
@Inject(BROWSER_STORAGE) public storage: Storage,
@Inject(PLATFORM_ID) public platformId: object
) {}
然后在ngInit.里面将返回
ngOnInit(): void {
if (isPlatformBrowser(this.platformId)) {
sessionStorage.setItem('store', 'store');
this.storage.setItem('storeDI', 'storeDI');
}
}
isPlatformBrowser(this.platformId)
将返回 false
在服务器端和 true
在浏览器端。