angular - 无法从 Angular 的资产文件夹中加载 CSS 文件
问题描述
我尝试在 Angular 5 项目中从资产文件夹加载 CSS 文件。在这个文件夹中,我有一个可以正常工作的完整模板,当我将在文件夹中打开默认的 index.html 时。
但我想在 setcard.component.html 中使用它
Wenn 我打开 url localhost:4200/setcard/1 然后我会得到以下错误:
拒绝应用来自 '' 的样式,因为它的 MIME 类型 ('text/html') 不是受支持的样式表 MIME 类型,并且启用了严格的 MIME 检查。7:1 拒绝应用来自“http://localhost:4200/sedcard/assets/creative-agency/css/owl.carousel.css”的样式,因为它的 MIME 类型(“text/html”)不是受支持的样式表 MIME类型,并启用严格的 MIME 检查。
这是我如何在文件 src/index.html 的源代码中添加它的链接(在头部):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!--
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
-->
<meta name="description" content="">
<meta name="author" content="">
<!-- Google font -->
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700%7CVarela+Round" rel="stylesheet">
<!-- Owl Carousel -->
<link type="text/css" rel="stylesheet" href="./assets/creative-agency/css/owl.carousel.css" />
<link type="text/css" rel="stylesheet" href="./assets/creative-agency/css/owl.theme.default.css" />
<!-- Magnific Popup -->
<link type="text/css" rel="stylesheet" href="./assets/creative-agency/css/magnific-popup.css" />
<!-- Font Awesome Icon -->
<link rel="stylesheet" href="./assets/creative-agency/css/font-awesome.min.css">
<!-- Custom stlylesheet -->
<link type="text/css" rel="stylesheet" href="./assets/creative-agency/css/style.css" />
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<title>hFinder</title>
<base href="/">
</head>
<body>
<app-root></app-root>
</body>
</html>
我的项目中的文件夹如下所示:
例如,当我更改 sedcard/sedcard.component.html 中图像的路径时,它们将被查看:
<div class="col-md-6">
<div id="about-slider" class="owl-carousel owl-theme">
<img class="img-responsive" src="assets/creative-agency/img/about1.jpg" alt="">
<img class="img-responsive" src="assets/creative-agency/img/about2.jpg" alt="">
<img class="img-responsive" src="assets/creative-agency/img/about1.jpg" alt="">
<img class="img-responsive" src="assets/creative-agency/img/about2.jpg" alt="">
</div>
</div>
<!-- /About slider -->
唯一不同的是,图像将在 src/sedcard/sedcard.component.html 的 assets-folder 中调用,而不是在 src/index.html
但我不知道我应该改变什么。谢谢你的帮助。
解决方案
您需要在assets
任何地方使用一个斜杠作为前缀。例如
<link type="text/css" rel="stylesheet" href="/assets/creative-agency/css/magnific-popup.css" />
或者
<img class="img-responsive" src="/assets/creative-agency/img/about1.jpg" alt="">
与您现在所做的不同之处在于您始终使用/
;来引用应用程序根目录。如果您不指定它,浏览器将查找相对于当前 URL 的资产(这可能是任何东西,因为您的路由器会不断更改它)
推荐阅读
- scala - SBT:动态检测构建平台
- php - 将 WooCommerce 变体下拉菜单显示为模态框
- php - Symfony 4:如何获得投票赞成的选民?
- angular - 如何将参数从 UI 传递到 graphql 以获取数据
- javascript - 如何在 JavaScript 中删除未选中的类复选框
- javascript - JavaScript:如何动态定义方法?
- r - 数据问题:addAwesomeMarkers 需要 lng、lat,但我的数据存储在向量中。解决问题?
- python - 如何在 python 的 sklearn 中使用交叉验证执行 SMOTE
- javascript - Vue Apollo - 无法使用变量“无法分配给对象的只读属性'名称'”进行查询
- c# - 文本框下划线