Рендеринг <style> внутри компонента с помощью средства визуализации (Angular 7)

I have issue with rendering inside component. I would like to emit data from another component and send to another component, data was emitted, but the problem is when I create the элемент с Renderer2 иногда работает, а иногда нет. Возможно, это проблема с отрисовкой элемента стиля в компоненте?

toolbar.state.service.ts My service method for emitting data

private globalStyles = new BehaviorSubject<string>('');
formDesign(data: any) {
   this.globalStyles.next(data);
}

aside.component.ts Here I emit data from Reactive Form control and send to another component.

// Height
    this.formGlobal.controls['height'].valueChanges
      .pipe(debounceTime(500))
      .pipe(distinctUntilChanged())
      .pipe(takeUntil(this.destroy$))
      .subscribe(height => {
        this.formGlobal.controls['height'].setValue(height);
        this.formGlobal.updateValueAndValidity();
        this.showDataCriteria = {
          width: this.formGlobal.controls['width'].value + 'px',
          height: height + 'px'
        };
        this.toolbarStatus.formDesign(this.showDataCriteria);
      });

builder.component.ts Here I'm getting data from aside.component.ts and it received!

/**
   * Generate CSS
   */
  generateCss() {
    let basicStyles = ' ';
    let newStyle: HTMLElement;
    let style: HTMLElement = this.document.getElementById('custom-class');
    style
      ? (newStyle = style)
      : (newStyle = this.renderer.createElement('style'));

    this.renderer.setAttribute(newStyle, 'id', 'custom-class');
    let completeStyleFields = '';
    this.customStyle.global
      ? (basicStyles += `#${this.projectInfo.id} {${this.customStyle.global}}`)
      : (basicStyles += '');
    console.info(basicStyles);
    this.customStyle.sections.forEach(element => {
      completeStyleFields += `#${element.id} {${element.textProps}}`;
    });
    basicStyles += completeStyleFields;
    const text = (this.document.textContent = basicStyles);
    newStyle.innerText = text;
    this.renderer.appendChild(this.dndComponent.nativeElement, newStyle);
  }

Основная проблема возникает после того, как элемент стиля был создан, и я вижу элемент в DOM, стили не принимаются! Иногда принимаю, а иногда нет. Что я должен делать? Как управлять страницей перезагрузки, чтобы ввести компонент и элемент стилей? Короткий UPD: В конце концов, я вижу # 4152ae54-8a9d-49d5-a33d-62dfbbd35890 {height: 600px; ширина: 812 пикселей; } Но стили не принимаются к элементам!

CSS не может отобразить первую цифровую букву (# 4152ae54-8a9d-49d5-a33d-62dfbbd35890). Это потому, что, хотя HTML5 вполне устраивает, чтобы идентификатор начинался с числа, CSS - нет. CSS просто не позволяет селекторам начинаться с числа. В соответствующей части спецификации указано

Николай Кузьмин 10.12.2018 18:11
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
0
1
588
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

CSS не может отобразить первую цифровую букву (# 4152ae54-8a9d-49d5-a33d-62dfbbd35890). Это потому, что, хотя HTML5 вполне устраивает, чтобы идентификатор начинался с числа, CSS - нет. CSS просто не позволяет селекторам начинаться с числа. В соответствующей части спецификации указано.

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