我正在使用一种服务(身份验证服务)来检查用户是否保存在本地存储中,还是不保存一个新的存储,或者是否已经保存了该用户,现在我想使用Angular Universal进行构建,以便本地存储会导致错误,因此下载了软件包@ng-toolkit/universal
,然后像文档一样注入了localstorage,但是它导致使用localstorage的所有功能都抛出并出错
这是针对使用Angular 8,Angular Universal,@ng-toolkit/universal
import { LOCAL_STORAGE } from "@ng-toolkit/universal";
@Injectable({
providedIn: "root"
})
export class AuthService {
user: User;
userLoggedIn = new Subject();
constructor(
private _http: HttpClientService,
@Inject(LOCAL_STORAGE) public localStorage
) {}
get isLogin() {
if (localStorage.getItem("user")) {
this.user = JSON.parse(localStorage.getItem("user"));
this.userLoggedIn.next();
return JSON.parse(localStorage.getItem("user"));
}
}
register(body) {
return this._http.post(body, "user/register");
}
login(body) {
return this._http.post(body, "user/login");
}
saveUser(user) {
localStorage.setItem("user", JSON.stringify(user));
this.user = user;
}
updateProfile(body) {
return this._http.post(body, "auth/applicant/profile/create-general-info");
}
get Token() {
if (localStorage.getItem("user")) {
try {
return JSON.parse(localStorage.getItem("user")).token;
} catch (e) {
console.log(e);
}
}
}
// Get User Role
get Role() {
if (localStorage.getItem("user")) {
try {
return JSON.parse(localStorage.getItem("user")).role.role;
} catch (e) {
console.log(e);
}
}
}
get UserId() {
if (localStorage.getItem("user")) {
return JSON.parse(localStorage.getItem("user")).id;
}
}
get User() {
if (localStorage.getItem("user")) {
return JSON.parse(localStorage.getItem("user"));
}
}
我希望这些功能能够像注入之前一样正常且正确地工作,但是现在它们并不是功能会抛出错误,主要是isLogin和Token
答案 0 :(得分:0)
答案是否定的。您无法在Angular Universal中使用localStorage
。只有特殊的注入才能编译代码。但是localStorage
仅存在于用户的浏览器中,而在服务器上不可用。您可以使用isPlatformBrowser
来检查localStorage
是否可用。 this article