Asp.net core 2.0 spa angular 4产生2个部分

时间:2017-09-22 16:09:35

标签: angular asp.net-core webpack-2

我已经尝试了很长一段时间来获得角度和asp.net核心玩得很好。我通过分离它取得了很大的成功,但问题是缺乏搜索引擎优化,所以我转向使用内置spa模板的新VS2017(我也尝试过以前的版本,但还有其他问题),因为我知道他们使用的是Angular Universal。 / p>

一切进展顺利,没有任何问题(除了hmr没有清除重装页面,所以我得到2份)然后我想我会尝试角度4中的元模块添加标题和描述,检查后页面源我注意到标签已添加,但还有第二部分。我不知道是什么导致了这个!我删除了Meta模块,以防出现问题,但显然不是!这是渲染源,

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Home Page - AngularMaterial</title>
    <base href="/" />


<link href="/dist/toastr.css" rel="stylesheet" />
    <script src="https://ajax.googleapis.com/ajax/libs/hammerjs/2.0.8/hammer.min.js"></script>
    <link rel="stylesheet" href="/dist/vendor.css?v=bzqEeKYfqu58ed-dtQv6xARrcvfdhL8uYPo7HpPskds" />
</head>
<body>

<app><html><head><style>.....styles removed...</style></head><body><app _nghost-c0="" ng-version="4.2.5"><nav-menu _ngcontent-c0="" _nghost-c1="">

如果您需要查看更多代码,请与我们联系。

编辑:

我刚刚制作了一个空白项目,这似乎是spa模板的一个错误。我在哪里报告错误?

1 个答案:

答案 0 :(得分:0)

这是一个错误,它有一个解决方法:https://github.com/aspnet/JavaScriptServices/issues/1233  在boot.server.ts中你需要添加:

                resolve({
                    html: state.renderToString()
                        .replace('<html><head>', '')
                        .replace('</head><body>', '')
                        .replace(/<\s*app.*?>/,'')
                        .replace('</app></body></html>', '')
                });

这项工作有效,但是你应该尝试添加你不能使用的元标记或标题等,因为你已经删除了包含它们的头标记,而你制作的新标记只会被插入到主体中。而是页面。 Asp.Net Core SPA / Javascript服务尚未准备就绪,如果能够更新标题和描述对您来说很重要,并且查看git页面,生产可能还有很长的路要走。