我发现这篇文章:https://github.com/angular/universal/issues/272其中user @ gdi2290解释了如何添加该功能
但我的代码中出现错误:
/home/master/Documents/rs-dash/dist/server/server.bundle.js:317 throw 新错误("模块构建失败:错误: /home/master/Documents/rs-dash/src/app/app.node.module.ts(97,48): 物业'注射器'在类型上不存在 ' ApplicationRef'。)\ N /家/主/文档/ RS-破折号/ SRC /应用程序/ app.node.module.ts (97,61):找不到姓名' YourServiceWithState'。)\ n at _checkDiagnostics(/home/master/Documents/universal-cli/packages/@ngtools/webpack/src/loader.ts:115:15)\n 在 /home/master/Documents/universal-cli/packages/@ngtools/webpack/src/loader.ts:140:17"); ^
我在节点模块中添加了:
constructor(public appRef: ApplicationRef) {
}
// lives in your node main module
universalDoDehydrate(universalCache) {
var yourServiceWithState = this.appRef.injector.get(YourServiceWithState)
var key = 'yourServiceWithState._state'
universalCache[key] = yourServiceWithState._state.justOneProp
}
并在浏览器模块中:
constructor(public appRef: ApplicationRef) {
// lives in your browser main module
var key = 'yourServiceWithState._state'
if (UNIVERSAL_CACHE[key]) {
localStorage[key] = UNIVERSAL_CACHE[key]
}
}
任何人都知道什么是问题,我使用universal-cli
?
答案 0 :(得分:0)
我遇到了问题并开发了一个缓存&它的服务器端解决方案(4个独立的包用于服务器和浏览器平台上的缓存操作)。
检查ng-seed/universal处的实施情况。一切都是通过方法/ loader / etc上的@Cached(...)
装饰器来处理的,你希望它被缓存。此外,还可以使用缓存API来使用缓存方法(has
,get
,set
)。
以下是您需要使用的软件包,用于服务器端缓存: