mirror of
https://github.com/aspnet/JavaScriptServices.git
synced 2025-12-22 17:47:53 +00:00
Use HttpWithStateTransferModule in Angular template
This commit is contained in:
@@ -3,6 +3,7 @@ import { CommonModule } from '@angular/common';
|
|||||||
import { FormsModule } from '@angular/forms';
|
import { FormsModule } from '@angular/forms';
|
||||||
import { HttpModule } from '@angular/http';
|
import { HttpModule } from '@angular/http';
|
||||||
import { RouterModule } from '@angular/router';
|
import { RouterModule } from '@angular/router';
|
||||||
|
import { HttpWithStateTransferModule } from 'aspnet-angular';
|
||||||
|
|
||||||
import { AppComponent } from './components/app/app.component';
|
import { AppComponent } from './components/app/app.component';
|
||||||
import { NavMenuComponent } from './components/navmenu/navmenu.component';
|
import { NavMenuComponent } from './components/navmenu/navmenu.component';
|
||||||
@@ -21,6 +22,7 @@ import { CounterComponent } from './components/counter/counter.component';
|
|||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
HttpModule,
|
HttpModule,
|
||||||
|
HttpWithStateTransferModule,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
RouterModule.forRoot([
|
RouterModule.forRoot([
|
||||||
{ path: '', redirectTo: 'home', pathMatch: 'full' },
|
{ path: '', redirectTo: 'home', pathMatch: 'full' },
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Component, Inject } from '@angular/core';
|
import { Component, Inject } from '@angular/core';
|
||||||
import { Http } from '@angular/http';
|
import { HttpWithStateTransfer } from 'aspnet-angular';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'fetchdata',
|
selector: 'fetchdata',
|
||||||
@@ -8,7 +8,7 @@ import { Http } from '@angular/http';
|
|||||||
export class FetchDataComponent {
|
export class FetchDataComponent {
|
||||||
public forecasts: WeatherForecast[];
|
public forecasts: WeatherForecast[];
|
||||||
|
|
||||||
constructor(http: Http, @Inject('BASE_URL') baseUrl: string) {
|
constructor(http: HttpWithStateTransfer, @Inject('BASE_URL') baseUrl: string) {
|
||||||
http.get(baseUrl + 'api/SampleData/WeatherForecasts').subscribe(result => {
|
http.get(baseUrl + 'api/SampleData/WeatherForecasts').subscribe(result => {
|
||||||
this.forecasts = result.json() as WeatherForecast[];
|
this.forecasts = result.json() as WeatherForecast[];
|
||||||
}, error => console.error(error));
|
}, error => console.error(error));
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { enableProdMode, ApplicationRef, NgZone, ValueProvider } from '@angular/
|
|||||||
import { platformDynamicServer, PlatformState, INITIAL_CONFIG } from '@angular/platform-server';
|
import { platformDynamicServer, PlatformState, INITIAL_CONFIG } from '@angular/platform-server';
|
||||||
import { createServerRenderer, RenderResult } from 'aspnet-prerendering';
|
import { createServerRenderer, RenderResult } from 'aspnet-prerendering';
|
||||||
import { AppModule } from './app/app.module.server';
|
import { AppModule } from './app/app.module.server';
|
||||||
|
import { HttpWithStateTransfer } from 'aspnet-angular';
|
||||||
|
|
||||||
enableProdMode();
|
enableProdMode();
|
||||||
|
|
||||||
@@ -20,6 +21,7 @@ export default createServerRenderer(params => {
|
|||||||
const appRef: ApplicationRef = moduleRef.injector.get(ApplicationRef);
|
const appRef: ApplicationRef = moduleRef.injector.get(ApplicationRef);
|
||||||
const state = moduleRef.injector.get(PlatformState);
|
const state = moduleRef.injector.get(PlatformState);
|
||||||
const zone = moduleRef.injector.get(NgZone);
|
const zone = moduleRef.injector.get(NgZone);
|
||||||
|
const http: HttpWithStateTransfer = moduleRef.injector.get(HttpWithStateTransfer);
|
||||||
|
|
||||||
return new Promise<RenderResult>((resolve, reject) => {
|
return new Promise<RenderResult>((resolve, reject) => {
|
||||||
zone.onError.subscribe((errorInfo: any) => reject(errorInfo));
|
zone.onError.subscribe((errorInfo: any) => reject(errorInfo));
|
||||||
@@ -28,7 +30,8 @@ export default createServerRenderer(params => {
|
|||||||
// completing the request in case there's an error to report
|
// completing the request in case there's an error to report
|
||||||
setImmediate(() => {
|
setImmediate(() => {
|
||||||
resolve({
|
resolve({
|
||||||
html: state.renderToString()
|
html: state.renderToString(),
|
||||||
|
globals: { ...http.stateForTransfer() }
|
||||||
});
|
});
|
||||||
moduleRef.destroy();
|
moduleRef.destroy();
|
||||||
});
|
});
|
||||||
|
|||||||
5
templates/AngularSpa/npm-shrinkwrap.json
generated
5
templates/AngularSpa/npm-shrinkwrap.json
generated
@@ -273,6 +273,11 @@
|
|||||||
"from": "asn1.js@>=4.0.0 <5.0.0",
|
"from": "asn1.js@>=4.0.0 <5.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz"
|
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz"
|
||||||
},
|
},
|
||||||
|
"aspnet-angular": {
|
||||||
|
"version": "0.1.1",
|
||||||
|
"from": "aspnet-angular@0.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/aspnet-angular/-/aspnet-angular-0.1.1.tgz"
|
||||||
|
},
|
||||||
"aspnet-prerendering": {
|
"aspnet-prerendering": {
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"from": "aspnet-prerendering@3.0.1",
|
"from": "aspnet-prerendering@3.0.1",
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
"@ngtools/webpack": "1.5.0",
|
"@ngtools/webpack": "1.5.0",
|
||||||
"@types/webpack-env": "1.13.0",
|
"@types/webpack-env": "1.13.0",
|
||||||
"angular2-template-loader": "0.6.2",
|
"angular2-template-loader": "0.6.2",
|
||||||
|
"aspnet-angular": "^0.1.1",
|
||||||
"aspnet-prerendering": "^3.0.1",
|
"aspnet-prerendering": "^3.0.1",
|
||||||
"aspnet-webpack": "^2.0.1",
|
"aspnet-webpack": "^2.0.1",
|
||||||
"awesome-typescript-loader": "3.2.1",
|
"awesome-typescript-loader": "3.2.1",
|
||||||
|
|||||||
Reference in New Issue
Block a user