在角度6中完成SSR后,传输状态不更新组件

时间:2019-03-03 12:20:32

标签: javascript angular angular-universal ssr

这是我服务中的代码:

import { TransferState, makeStateKey } from '@angular/platform-browser';

const PARTICULAR_BLOG_KEY = makeStateKey('particularBlog');

constructor(
    private state: TransferState
)

  getParticular(data): Observable<any> {
    const found = this.state.hasKey(PARTICULAR_BLOG_KEY);
    const dataSSR = Object.assign({}, this.state.get(PARTICULAR_BLOG_KEY, null as any));
    if (found) {
      return new Observable((observer) => {
        observer.next(dataSSR);
      });
    } else {
      return this.api.get('getBlog/' + data.id, null).pipe(map(response => {
        this.state.set(PARTICULAR_BLOG_KEY, response);
        return response;
      }));
    }
  }

我已经订阅了该服务,并且当API在SSR期间以正确的方式呈现该组件时,但是当数据到达该组件时该对象为空,因此当我删除this.state.set部分时,我需要刷新页面数据流运行完美,我的组件开始以正确的方式呈现数据。

以下是在订阅后获取残缺数据的组件:

@Input() public set content(val: any) {

    this.savedLocal = val;
    this.blogItems = val;
    this.setSlider();
}

子组件的值都为空。但如果删除传输状态代码,则已修复。那么我应该如何调试它或强制更新子组件中的数据?

0 个答案:

没有答案