在Angular5上如何从express中呈现html模板

时间:2018-01-08 06:32:10

标签: angular http express templates render

所以,我遇到了一个相当独特的情况。我的任务是将运行服务器端express和html作为其视图引擎的现有存储库转换为使用客户端Angular(5)进行表达。

当我到达一个我无法转换为Angular的html视图时,我被卡住了,并希望从服务器端快速呈现此视图。

现在,我有一个表单组件,它通过我在Angular中编写的服务返回http post请求的Promise,并且post请求(来自express)应该以html视图的呈现结束来自快速反应对象。但当express进入该渲染调用时,没有任何反应,我仍然在同一个表单组件上。

我知道尝试这样做可能是不好的做法,但是是否可以快速呈现客户端的视图(同时插入从请求主体传递的数据)?

1 个答案:

答案 0 :(得分:0)

是的,这是不好的做法。非常糟糕的做法。 Angular不使用服务器端渲染来制作单页应用程序。

你不应该这样做。

但是既然你问过,是的,这是可能的。

如果没有代码,我必须将其设为通用,但我猜你已经有了使用express的节点应用程序。

你可以创建你的页面并像这样服务

import { Component, OnInit } from '@angular/core';
import { Router} from '@angular/router';

@Component({
  selector: 'app-page1',
  templateUrl: './page1.component.html',
  styleUrls: ['./page1.component.css']
})
export class Page1Component implements OnInit {

  constructor(private _router:Router) { }

  ngOnInit() {
  }

OnbtnClick()
{
let abc =this._router.navigate(['/page2'])

}
}

在其他情况下,你可以告诉express提供角度应用

<div style="text-align:center">
  <h1>
    Welcome to SuperHero!
  </h1>
</div>

<app-page1></app-page1>   

(注意:如果在任何情况下重定向,这应该是您的最后app.get('myCustomPage', (req, res) => { /* serve your page */ }); 语句。)

最后的解决方案是使用带角度的哈希位置策略

app.configure(() => {
  app.use((req, res) => { /* serve Angular here */});
});

意味着您的应用程序将处理自己的路由,这意味着您可以轻松地在另一个URL上提供自定义页面。

但是,不要那样做