gpt4 book ai didi

尝试使用 angular2-universal-starter 时 angular2 组件未呈现

转载 作者:太空狗 更新时间:2023-10-29 18:02:46 25 4
gpt4 key购买 nike

我正在开发一个应用程序,它可以帮助我呈现包含 angular2 组件的静态 html

我开发了几个 angular2 组件。现在我需要将它们插入到我的静态 html 中。

到目前为止我可以成功生成静态html。但是当我在我的 html 中使用我的 angular2 组件的选择器标签时,它会按原样呈现这些标签。即 未加载 angular2 组件。以前使用相同的代码正确加载组件。

以下是我使用过的代码片段。

1.app.component.ts

import {Component, Directive, ElementRef, Renderer} from 'angular2/core';

@Component({
selector: 'app',
templateUrl: 'demo.component.html'
})
export class App {
name: string = 'Angular Server Rendering Test';
}

2.demo.component.html

<div>
{{name}}
</div>

3.client.ts

import {bootstrap} from 'angular2/platform/browser';
//import {HTTP_PROVIDERS} from 'angular2/http';
// import {bootstrap} from 'angular2-universal-preview';
import {App} from './app/app.component';
bootstrap(App);

4.server.ts

import * as path from 'path';
import * as express from 'express';
import * as universal from 'angular2-universal-preview';

// Angular 2
import {App} from './app/app.component';

let app = express();
let root = path.join(path.resolve(__dirname, '..'));

// Express View
app.engine('.ng2.html', universal.ng2engine);
app.set('views', __dirname);
app.set('view engine', 'ng2.html');

// Serve static files
app.use(express.static(root));
var i = 0;
// Routes
app.use('/', (req, res) => {
res.render('index_new', { app }, function(err,html){
console.log("------------------My HTML ---------\n"+(i++));
console.log(html);
console.log("------------------My HTML ----------");
res.send(html);
});
});

// Server
app.listen(3000, () => {
console.log('Listen on http://localhost:3000');
});

6.index.html

<head>
<meta charset="UTF-8">
<title>Angular 2 Universal Starter</title>
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<base href="/">
</head>
<body>
<app>Loading....</app>

<script src="/node_modules/es6-shim/es6-shim.js"></script>
<script src="/node_modules/es6-promise/dist/es6-promise.js"></script>
<script src="/node_modules/reflect-metadata/Reflect.js"></script>
<script src="/node_modules/zone.js/dist/zone-microtask.js"></script>
<script src="/node_modules/zone.js/dist/long-stack-trace-zone.js"></script>
<script src="/dist/client/bundle.js"></script>
<script>
System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
}
});
System.import('app/client')
.then(null, console.error.bind(console));
</script>
</body>
</html>

抱歉,代码片段太长。所以当我使用 npm start 运行这个应用程序时,我的应用程序呈现 html,即 angular2 组件没有进入选择器标签。以下是浏览器和控制台的快照。 Browser shows this output

Console Output

最佳答案

我认为您在以下行中打错了字。您应该使用 App 而不是 app。您需要在此处指定要使用的应用程序组件,而不是 Express 应用程序:

res.render('index_new', { App }, function(err,html){

关于尝试使用 angular2-universal-starter 时 angular2 组件未呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35223148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com