所以,我遇到了一个相当独特的情况。我的任务是将运行服务器端express和html作为其视图引擎的现有存储库转换为使用客户端Angular(5)进行表达。
当我到达一个我无法转换为Angular的html视图时,我被卡住了,并希望从服务器端快速呈现此视图。
现在,我有一个表单组件,它通过我在Angular中编写的服务返回http post请求的Promise,并且post请求(来自express)应该以html视图的呈现结束来自快速反应对象。但当express进入该渲染调用时,没有任何反应,我仍然在同一个表单组件上。
我知道尝试这样做可能是不好的做法,但是是否可以快速呈现客户端的视图(同时插入从请求主体传递的数据)?
答案 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上提供自定义页面。
但是,不要那样做。