Angular 客户端异步。具有服务器端呈现的请求

Angular 客户端异步。具有服务器端呈现的请求,angular,universal,server-side-rendering,Angular,Universal,Server Side Rendering,我想我会尝试一下使用Angular4/Node.js进行搜索引擎优化,但是遇到了一个挑战 Angular Universal使我能够进行服务器端渲染,这样我就可以在我的页面进入浏览器之前将我的元关键字、标题、图像URL等注入HTML——太棒了!现在的挑战是,在某种程度上,我希望至少能够在客户端异步地做一些事情,例如获取一些JSON数据,甚至捕获角度单击事件 在使用下面的示例时,我似乎无法完成这类工作 home.component.ts import { Component, OnInit } f

我想我会尝试一下使用Angular4/Node.js进行搜索引擎优化,但是遇到了一个挑战

Angular Universal使我能够进行服务器端渲染,这样我就可以在我的页面进入浏览器之前将我的元关键字、标题、图像URL等注入HTML——太棒了!现在的挑战是,在某种程度上,我希望至少能够在客户端异步地做一些事情,例如获取一些JSON数据,甚至捕获角度单击事件

在使用下面的示例时,我似乎无法完成这类工作

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
    });
  }
}
从'@angular/core'导入{Component,OnInit};
从'@angular/Http'导入{Http,Response};
@组成部分({
选择器:“主页”,
模板:`fetchsomejson`,
样式URL:['./home.component.scss']
})
导出类HomeComponent实现OnInit{
建造师(
私有http:http
) {}
ngOnInit(){}
公共获取(){
console.log(“单击”);//不发生
这个._http.get('./i18n/da.json'))
.订阅((r:响应)=>{
console.debug(r.json());//也没有发生
});
}
}
在使用Universal进行服务器端渲染时,这样的事情是不可能发生的吗?你们将如何实施这一点


干杯

我不确定你的意图是什么,但我认为这可能是其中之一:

  • 在Angular接管之前,当用户单击服务器端的渲染按钮时,您想做一些事情吗?那你是在找
  • 是否要在服务器端渲染期间从服务器获取数据,然后在客户端使用这些数据?那么您可能正在寻找复水化API

  • 你的应用程序有点问题,它根本不会对点击按钮做出反应。即使使用SSR,点击也应该是开箱即用的。检查控制台是否有错误

  • 3.答案是正确的:)。我的捆绑包未包含在应用程序中,并且未生成任何错误。谢谢你说它实际上应该按预期的那样工作,这正是我走向正确方向的原因。