1

我发现这篇文章:https ://github.com/angular/universal/issues/272其中用户@gdi2290 解释了如何添加该功能

但是我的代码中出现错误:

/home/master/Documents/rs-dash/dist/server/server.bundle.js:317 抛出新错误(“模块构建失败:错误:/home/master/Documents/rs-dash/src/app/app. node.module.ts (97,48):“ApplicationRef”类型上不存在属性“injector”。)\n/home/master/Documents/rs-dash/src/app/app.node.module.ts( 97,61): 在 _checkDiagnostics (/home/master/Documents/universal-cli/packages/@ngtools/webpack/src/loader.ts:115:15) 处找不到名称“YourServiceWithState”。\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吗?

4

1 回答 1

0

我遇到了这个问题,并为它开发了一个缓存和服务器端解决方案(4 个单独的包,用于服务器和浏览器平台上的缓存操作)。

检查ng-seed/universal的实现。一切都通过@Cached(...)您希望缓存的方法/加载器/等上的装饰器处理。此外,还可以使用缓存 API来使用缓存方法 ( has, get, )。set

以下是您需要使用的用于服务器端缓存的包:

于 2017-04-15T12:21:29.967 回答