【发布时间】:2018-12-11 23:35:39
【问题描述】:
我已将我的应用程序从 Angular 6 移动到 Angular Universal,并且在这样做之后,我在控制台中注意到了这个错误:
sessionStorage 未定义
它正在抱怨这项服务:
export class SessionService {
constructor(
private key: string
) {
}
save(json: any) {
sessionStorage.setItem(this.key, JSON.stringify(json));
}
get() {
return JSON.parse(sessionStorage.getItem(this.key));
}
clear() {
sessionStorage.clear();
}
}
我看到你可以这样做:
if (!isPlatformBrowser(this.platformId)) return;
但是这个服务实际上是这样扩展的:
import { Injectable } from '@angular/core';
import { SessionService } from './session.service';
@Injectable({
providedIn: 'root'
})
export class QuestionSessionService extends SessionService {
constructor() {
super(
'questions'
);
}
}
所以我不能将@Inject(PLATFORM_ID) private platformId: Object 添加到构造函数中。
有人可以帮我解决这个问题吗?
【问题讨论】:
-
您是否尝试在父服务中注入
PLATFORM_ID? -
我不认为我可以这样做,因为它会使所有其他服务(扩展它)需要额外的构造函数参数