如何使用angular universal在服务器端呈现中加载json
我正在为我的学士学位论文的一个大学项目构建一个angular2通用应用程序。我想用angular universal在服务器上渲染此应用程序。如何在服务器上加载.json文件?在我没有服务器端呈现的版本中,我使用一个服务获取带有http.get请求的JSON,如下所示:如何使用angular universal在服务器端呈现中加载json,json,node.js,angular,server-side-rendering,angular-universal,Json,Node.js,Angular,Server Side Rendering,Angular Universal,我正在为我的学士学位论文的一个大学项目构建一个angular2通用应用程序。我想用angular universal在服务器上渲染此应用程序。如何在服务器上加载.json文件?在我没有服务器端呈现的版本中,我使用一个服务获取带有http.get请求的JSON,如下所示: @Injectable() export class VideoService { private movieSubject: BehaviorSubject<Video[]> = new BehaviorSubj
@Injectable()
export class VideoService {
private movieSubject: BehaviorSubject<Video[]> = new BehaviorSubject<Video[]>([]);
movies$: Observable<Video[]> = this.movieSubject.asObservable();
constructor(private http : Http) {
this.http.get('./json/movies/movies.json').subscribe(
res => this.movieSubject.next(res.json()),
error => console.error(error)
)
}
}
在模板中,我使用以下代码将数据注入另一个组件:
<app-info-site *ngIf="movieInfos" [movieInfos]="movieInfos"></app-info-site>
当我将此代码用于angular universal时,它仍然可以工作,但是属于json的站点部分第一次加载到客户端,并且由于ngIf,服务器忽略了这部分代码,因此我从服务器获得了一个不完整的.html文件。如何在服务器上加载该文件以从中获取完整的.html站点
PS:我对angular2和服务器端渲染完全陌生。首先,我建议您迁移到Angular4,因为服务器端渲染现在是Angular4的一部分,而Angular4不需要Angular Universal 你也可以结帐 要在现有结构中应答,您应该通过从实现OnInit将http调用从构造函数移动到ngOnInit
import { OnInit } from '@angular/core';
export class YourComponent implements OnInit {
...other variable and functions...
ngOnInit() {
this.http.get('./json/movies/movies.json').subscribe(
res => this.movieSubject.next(res.json()),
error => console.error(error)
);
}
}
如果您需要任何其他支持,请告诉我…我记得最近尝试过类似的操作,但遇到一个错误,说我需要使用绝对路径。不使用abs的情况下,是什么使其工作。路径?干杯(目前不是在PC上/无法在我的设置中尝试代码)@rex查看您发布的文章,您实际上没有使用Angular Univeral进行服务器端渲染。我使用的是Angular 6,我很想使用Universal来构建简单的NodeJS服务器。
import { OnInit } from '@angular/core';
export class YourComponent implements OnInit {
...other variable and functions...
ngOnInit() {
this.http.get('./json/movies/movies.json').subscribe(
res => this.movieSubject.next(res.json()),
error => console.error(error)
);
}
}