使用resolvind数据进行Angular4服务器端渲染

时间:2017-08-07 13:15:35

标签: angular resolve server-rendering platform-server

我正在开发Angular4项目。我在此tutorial之后集成了服务器端呈现。一切都有效,除了一件事。

我需要在从API服务器解析数据后更改页面的元标记。我的意思是像这样解决:

RouterModule.forChild([
            {
                path: ':id',
                component: NewsCardComponent,
                resolve: {
                    card: NewsCardResolver
                }
            }
        ])

在当前实现中,服务器发送呈现的页面而不解析数据,解析请求发生在客户端上。

在将结果发送给客户端之前,有人可以告诉我如何在服务器渲染时获取数据时如何实现行为?

1 个答案:

答案 0 :(得分:0)

我注意到您的路线没有提供商,但您使用的是解决方案。

所以我猜你的NewsCardResolver是一个@Injectable服务,它至少实现像这样https://www.codementor.io/max_diachenko/angular-2-route-resolves--typescript-du1089pdm的Resolve?或者这个https://scotch.io/courses/routing-angular-2-applications/data-and-resolve

@Injectable()
export class MyResolver implements Resolve<class> {
  constructor(private service: Service, private router: Router) {}

  resolve(route: ActivatedRoute): Promise<Data> { ... }

最后在组件init上获取数据:

 ngOnInit() {
    this.route.data
      .subscribe((data: Data ) => {
        let result = data;
      });
  }