Angular4 Material主题在ASP.NET Core项目上无法正常工作

时间:2017-07-07 21:41:01

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

我刚刚使用本网站提到的ASP.NET Core Angular SPA模板创建了一个项目:Building Single Page Applications on ASP.NET Core with JavaScriptServices

之后,我添加了@ angular / material,@ angular / cdk和@ angular / flex-layout npm包。

我使用Angular Material工具栏和菜单创建了一个非常简单的页面。 我在_Layout.cshtml上链接了Pink-BlueGrey.css预建主题(手动将css文件复制到wwwroot以简化操作)。

结果是所有Angular Material组件现在都被设置了样式,但是每个未包含在材质组件中的html都没有设置样式。我不明白为什么。因为如果我使用Angular CLI创建项目,一切都按照预期的方式工作。

我选择的这个主题背景很暗。我需要字体是白色的,以便人们可以阅读。但这不是ASP.NET核心项目中发生的事情。

我认为这可能是webpack配置问题。我试图从_Layout.cshtml中删除css文件的链接,并添加到webpack.config.vendor.js中的vendors包中。但结果是一样的。它有效,但不是我想要的方式。

这应该发生吗?这是设计的吗?我是否应该编写一个CSS文件来设置Angular Material组件中未包含的所有HTML的样式?

我尝试通过删除" Microsoft.AspNetCore.SpaServices"来禁用服务器端预呈现。来自_ViewImports.cshtml的tagHelper和来自Index.cshtml的asp-prerender-module指令。一切都保持不变。我不知道出了什么问题。

我是网络开发的新手,我认为这应该是简单的东西。但我无法找到任何有这种确切设置和问题的人。

1 个答案:

答案 0 :(得分:1)

所以,问题是我对Angular CLI的看法不对。我用它做的项目是使用mdSidenav。当我用一个简单的div替换md-sidenav-container指令并删除sidenav组件时,Pink-BlueGrey的深色背景消失了,我的所有文本再次变黑。与ASP.NET Core项目相同的行为。所以这不是ASP.NET Core设置的问题。

我决定用来解决上述问题的方法,不是将“mat-app-background”类放在body标签中,而是必须使用材质容器在页面中的每个文本中,我在根应用程序组件上使用了 md-sidenav-container 指令。我没有使用sidenav本身。只是它的容器,所以每个使用的文本,即使它只是一个h1标签,都将被设计样式,因为它包含在一个材料组件中。

也许这不是最优雅的解决方案。所以如果有人有更好的建议......