Не работает импорт стилей в React при интеграции в Angular приложение

Моя задача интегрировать React в Angular приложение. Для этого был создан компонент, который будет служить "мостом" между Angular и React:

import { Component, ElementRef, OnInit, ViewChild } from "@angular/core";
import { ReactRootComponent } from "./ReactRootComponent/ReactRootComponent";
import React from "react";
import ReactDOM from "react-dom";

@Component({
  selector: "app-integration",
  template: `<div #reactRoot></div>`,
})
export class IntegrationComponent implements OnInit {
  @ViewChild("reactRoot", { read: ElementRef, static: true })
  ref: ElementRef;
  constructor() {}

  public ngOnInit(): void {
    this.renderComponent();
  }

  public ngOnChanges(): void {
    this.renderComponent();
  }

  private renderComponent() {
    ReactDOM.render(
      React.createElement(ReactRootComponent),
      this.ref.nativeElement
    );
  }
}

Сам же ReactRootComponent выглядит вот так:

import React from "react";
import "./test.css";


export const ReactRootComponent: React.FC = () => {

  return (
    <div className="test">
     Hello world
    </div>
  );
};

Приложение работает, компонент React рендерится. Но проблема в том, что стили не применяются, import "./test.css не работает. Я пробовал и в качестве модуля импортировать этот файл стилей: import styles from "./test.module.css". Здесь и вовсе ругается

Не удается найти модуль "./test.module.css" или связанные с ним объявления типов

Как исправить неработающие импорты?


Ответы (1 шт):

Автор решения: Darkness In me

Смог откопать решение проблемы!

Для компонента-моста в декоратор @Component задаем следующие параметры: styleUrl с путем на нужный CSS/SCSS файл и encapsulation со значением ViewEncapsulation.None.

В общем итоге, всё должно выглядеть таким образом:

@Component({
  selector: "app-integration",
  template: `<div #reactRoot></div>`,
  styleUrls: ["./test.scss"],
  encapsulation: ViewEncapsulation.None,
})

В самом уже React компоненте импортируем указанный в styleUrls файл стилей:

import "./../test.scss";

Моя структура папок в проекте:

введите сюда описание изображения

→ Ссылка