Angular - отказался применить стиль из «<URL>»

Я работаю над угловым приложением и пытаюсь лениво загрузить модуль с именем ProjectsModule, компонент проектов отображается без проблем, и когда я перехожу к такому проекту, как /projects/1, все в порядке, пока я не нажму «Обновить».
когда я нажимаю кнопку обновления в браузере, стиль страницы становится беспорядочным (некоторые стили теряются, а основной макет страницы нарушается) с ошибкой: (8 раз с другим URL-адресом каждый раз)

Refused to apply style from '<URL>' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.

и остается сломанным, пока я не перейду на другую страницу и снова не нажму «Обновить». ПРИМЕЧАНИЕ: ошибка не появляется ни в одном компоненте, кроме этого.

это мой код:
"приложение-routing.module.ts":

const routes: Routes = [
// some other routes here
{path: 'projects', loadChildren: () => import('./views/projects/projects.module').then(m=>m.ProjectsModule)},
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

"приложение.модуль.тс":

@NgModule({
  components: [
    App.component.ts,
    // my components
  ],
  imports: [
    BrowserModule,
    BrowserAnimationsModule,
    AppRoutingModule,
    ProjectsModule,
    // other modules
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

"проекты-routing.module.ts":

const routes: Routes = [
  {path: '', component: ProjectsComponent},
  {path: ':projectId', component: SingleProjectComponent}
];

@NgModule({
  imports: [
    RouterModule.forChild(routes)
  ],
  exports: [RouterModule]
})
export class ProjectsRoutingModule { }

"проекты.модуль.тс":

@NgModule({
  declarations: [ProjectsComponent, SingleProjectComponent],
  imports: [
    CommonModule,
    ProjectsRoutingModule,
    // other modules
  ],
  exports: [ProjectsComponent, SingleProjectComponent]
})
export class ProjectsModule { }

компонент под названием «SingleProjectComponent» пока ничего не содержит, и у него есть статические html-элементы в «single-project.component.html» и ничего особенного. если есть какой-то код, который я не показал, сообщите мне в комментариях.

Обновлено: "index.html":

<!doctype html>
<html lang = "en">
<head>
  <title>Eline</title>
  <meta charset = "utf-8">
  <meta http-equiv = "X-UA-Compatible" content = "IE=edge" />
  <meta name = "author" content = "Eline">
  <meta name = "viewport" content = "width=device-width,initial-scale=1.0,maximum-scale=1" />
  <meta name = "description" content = "Eline">
  <!-- favicon icon -->
  <link rel = "shortcut icon" href = "assets/images/favicon.png">
  <link rel = "apple-touch-icon" href = "assets/images/apple-touch-icon-57x57.png">
  <link rel = "apple-touch-icon" sizes = "72x72" href = "assets/images/apple-touch-icon-72x72.png">
  <link rel = "apple-touch-icon" sizes = "114x114" href = "assets/images/apple-touch-icon-114x114.png">
  <!-- style sheets and font icons  -->
  <link rel = "stylesheet" type = "text/css" href = "assets/css/font-icons.min.css">
  <link rel = "stylesheet" type = "text/css" href = "assets/css/theme-vendors.min.css">
  <link rel = "stylesheet" type = "text/css" href = "assets/css/style.css" />
  <link rel = "stylesheet" type = "text/css" href = "assets/css/responsive.css" />
  <base href = "/">
  <link rel = "preconnect" href = "https://fonts.gstatic.com">
  <link href = "https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel = "stylesheet">
  <link href = "https://fonts.googleapis.com/icon?family=Material+Icons" rel = "stylesheet">
</head>
<body data-mobile-nav-trigger-alignment = "right" data-mobile-nav-style = "full-screen-menu" data-mobile-nav-bg-color = "#33343a">
  <app-root></app-root>
</body>
</html>

Можете ли вы опубликовать код app.component.html здесь? Я думаю, вам нужно добавить type = "text/css" в тег ссылки для импорта css.

Krunal Limbad 26.03.2022 21:28

@KrunalLimbad app.component.html содержит только <router-outlet></router-outlet>, но я добавил теги ссылок в index.html, и все они имеют type = "text/css"

muaaz 26.03.2022 21:31

извините за плохое, пожалуйста, опубликуйте код index.html

Krunal Limbad 26.03.2022 21:32

@KrunalLimbad Я только что добавил это.

muaaz 26.03.2022 21:38

Кажется, все в порядке, не могли бы вы проверить этот решение?

Krunal Limbad 26.03.2022 21:42

Я проверил упомянутое вами решение, но оно не решило проблему, но URL-адреса файлов стилей в ошибке содержат /projects/, например: http://localhost:4200/projects/assets/css/style.css но настоящий без «проектов», так почему это так?

muaaz 26.03.2022 21:58
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
6
31
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я решил проблему, добавив '/' в начало каждого тега ссылки href в файле index.html.
так они сейчас такие:

<link rel = "stylesheet" type = "text/css" href = "/assets/css/font-icons.min.css" />
<link rel = "stylesheet" type = "text/css" href = "/assets/css/theme-vendors.min.css" />
<link rel = "stylesheet" type = "text/css" href = "/assets/css/style.css" />
<link rel = "stylesheet" type = "text/css" href = "/assets/css/responsive.css" />

так что путь был относительно текущего модуля не к базе.

Хотя это действительно решает вашу проблему, в идеале вы вообще не должны ссылаться на CSS, а вместо этого использовать сборщик ресурсов Angular.

MindingData 26.03.2022 23:04

@MindingData На самом деле я пытался сделать это раньше, но это не сработало, потому что есть некоторые файлы, которые импортируются в файлы стилей по URL-адресам относительно их пути, а не пути моего приложения (многие файлы не найдены ошибки), поэтому вместо изменения десятков URL-адресов в стиле, который я решил импортировать в index.html.

muaaz 27.03.2022 10:01

Другие вопросы по теме