这里有一个关于使用 localstorage 和 angular2 的很好的问答。https://stackoverflow.com/a/39098748/6203604
这种方法似乎适用于“npm start”。但是,当您运行“npm run build”时,错误:
出现“typeof ../browser.module”类型时不存在属性“window”。
在https://github.com/angular/universal-starter上的“通用陷阱”中,它说
窗口、文档、导航器和其他浏览器类型 - 在服务器上不存在 - 因此使用它们或任何使用它们的库(例如 jQuery)将不起作用。如果您确实需要其中一些功能,您确实有一些选择:如果您需要使用它们,请考虑将它们限制在您的 main.client 中,并使用从 Universal 导入的 isBrowser / isNode 功能根据情况包装它们。从 'angular2-universal' 导入 { isBrowser, isNode }; 另一种选择是使用“@angular/platform-browser”中的 DOM
isBrowser 包装器或使用平台浏览器是否适合在这里引用 localStorage?如何最好地写这个的任何例子?
例如,在 browser.module.ts 中,是否应该为可分发包包装 window.localStorage?
import {LocalStorage} from './local-storage.ts';
export function ngApp() {
return bootstrap(App, [
// ...
UserService,
{ provide: LocalStorage, useValue: window.localStorage}
]);
与“npm run build”可分发包一起使用的东西?
此外,在运行 npm start 时,我收到错误消息:Unexpected token u。
这似乎来自文件 node.module.ts 中 useValue 中的“u”,因为它消失并被替换为“没有令牌 LocalStorage 的提供者!”
...
providers: [
// ...
UserService,
{provide: LocalStorage, useValue: {getItem() {} }}
]
...
任何人得到类似的东西。想法?