客户端异步。带有服务器端渲染的请求

Client side async. requests with server side rendering

我想我会使用 Angular4 / Node.js 对 SEO 进行一些实验,但遇到了一个挑战。

Angular Universal 让我可以进行服务器端渲染,这样我就可以在我的页面进入浏览器之前将我的元关键字、标题、图像 url 等注入 HTML - -伟大的!现在的挑战是,在某些时候,我希望至少能够在客户端异步地做 some 事情,例如。 GET-ting 一些 JSON 数据,甚至捕获 Angular click-event.

在使用下面的示例时,我似乎无法做那种事情。

home.component.ts

import { Component, OnInit } from '@angular/core';
import { Http, Response } from '@angular/http';

@Component({
  selector: 'home',
  template: `<button (click)="fetch();">Fetch some json</button>`,
  styleUrls: ['./home.component.scss']
})
export class HomeComponent implements OnInit {

  constructor(
    private _http: Http
  ) {}

  ngOnInit() {}

  public fetch(){
    console.log("Clicked");             // Does not happen

    this._http.get('./i18n/da.json')
    .subscribe((r: Response) => {
      console.debug(r.json());          // Also not happening
    });
  }
}

当服务器端使用 Universal 渲染时,有没有办法实现这样的事情?你们会如何实施这个?

干杯!

我不太确定你的意图是什么,但我认为可能是以下之一:

  1. 您想在 Angular 接管之前用户单击服务器端呈现的按钮时做一些事情吗?那么你正在寻找 Preboot.
  2. 您想在服务器端渲染时从服务器获取数据,然后在客户端使用这些数据吗?那你可能正在寻找 TransferState 补液 API.

  3. 您的应用程序有问题,它对按钮点击根本没有反应。即使使用 SSR,点击也应该开箱即用。检查您的控制台是否有错误。