1

私はユニバーサルとangular4を使用しようとしています..すべてが機能し、ハッシュルートを介して直接アクセスすることもできます..しかし、問題はリクエストが常に表示されることです<body><demo-app></demo-app></body>

内部にいくつかのhtmlタグと情報があると思います<demo-app></demo-app>

これが私がそれをどのように実装したかです:

@NgModule({
  bootstrap: [AppComponent],
  imports: [
    BrowserModule.withServerTransition({
      appId: 'my-app-id'
    }),
    ServerModule,
    ServerTransferStateModule,
    AppModule
  ]
})

export class ServerAppModule {

  constructor(private transferState: TransferState,
  private translateService: TranslateService){
    translateService.use('en');
  }
  // Gotcha
  ngOnBootstrap = () => {
    this.transferState.inject();
  }
}


app.engine('html', ngExpressEngine({
  bootstrap: ServerAppModule
}));

app.set('view engine', 'html');
app.set('views', 'src');


app.get("*", (req, res) => {
  console.time(`GET: ${req.originalUrl}`);
  res.render('../dist/index', {
    req: req,
    res: res
  });
  console.timeEnd(`GET: ${req.originalUrl}`);
});

私のバージョンは "@angular/common": "^4.0.0" です

https://github.com/angular/universal/blob/master/modules/ng-express-engine/src/main.tsおよび_import { ngExpressEngine } from '@nglibs/universal-express-engine'

この議論に続いて、それがそのための新しい実装であることがわかりました

提案どおりにインポートしようとしましたが、機能しません (名前空間が存在しません)

  • import { ngExpressEngine } from '@universal/ng-express-engine'

このプル リクエストで提案されているように、バージョン rc.5 でテストされています。

最後に、このリンクをたどります

https://github.com/angular/universal/tree/master/modules/ng-express-engine

このライブラリでテストすると、同じ結果が得られます。

import { ngExpressEngine } from '@nguniversal/express-engine';

少なくともプロジェクトは実行されているので、コーディングと使用を続けることができます..しかし、完全なサーバー側のレンダリングを楽​​しみにしています.

ありがとう!

4

2 に答える 2