noUiSlider 未出现在 angular 应用程序中

noUiSlider not showing up in angular application

编辑 - 我的 hack 解决方案: 问题与 how/when/where 有关 angular 正在获取 NoUiSlider CSS。使这项工作成功的原因是将 css import @import "~nouislider/distribute/nouislider.min.css"; 添加到我的 src > styles.css 文件中。

我认为这不是实际的解决方案。我希望滑块的所有 css 都包含在组件的 CSS 文件中。所以我想我更新后的问题是:如何让 NoUiSlider 使用包含它的组件中的 CSS?

原题:

我的滑块不会出现在我的 Angular 应用程序中。我错过了什么?

我只是想在我的应用程序中呈现最基本的滑块,据我所知我没有收到任何错误。

--

package.json -- 如果需要我会添加更多(我也试过将 "nouislider": "^14.1.1", 放在 "dependencies" 中)

{
  ...
  "devDependencies": {
    ...
    "@types/nouislider": "^9.0.6",
    "nouislider": "^14.1.1",
    ...
  }
}

--

timeline-scroller.component.html(“Test text”是我在页面呈现时看到的唯一内容)

<div #contentComponent>Test text</div>

--

timeline-scroller.component.ts, {static: true} 是 angular 8 中的新要求)

import { Component, ElementRef, ViewChild, AfterViewInit } from '@angular/core';
import * as noui from 'nouislider';

@Component({
  selector: 'app-timeline-scroller',
  templateUrl: './timeline-scroller.component.html',
  styleUrls: ['./timeline-scroller.component.css']
})
export class TimelineScrollerComponent implements AfterViewInit {
  @ViewChild('contentComponent', {static: true}) contentElement: ElementRef;
  public slider: noui.noUiSlider;

  constructor() { }

  ngAfterViewInit(): void {
    this.slider = noui.create(
      this.contentElement.nativeElement, {
        start: 1,
        range: { min: 0,  max: 20 }
    });
  }
}

为了在我的组件中使用库 css,我需要将组件封装设置为“封装:ViewEncapsulation.None”

我的组件装饰器变成了:

@Component({
  selector: 'app-timeline-scroller',
  templateUrl: './timeline-scroller.component.html',
  styleUrls: ['./timeline-scroller.component.css'],
  encapsulation: ViewEncapsulation.None
})

然后在我的 slider.component.css 中我能够添加导入:

@import "~nouislider/distribute/nouislider.min.css";