使用Angular Renderer2添加SASS mixin

时间:2019-12-03 13:29:28

标签: angular sass angular-renderer2

我想将Bootstrap定义的make-col混合与Angulars Renderer2相加。

上下文

这个想法是创建一个接收两个输入的指令:

  • 元素应使用的列数
  • 总列数

并将mixin添加到元素中。

代码

在理想的世界中,它看起来像这样:

current_timestamp()

问题 有谁知道您是否可以通过Angular中的renderer2应用mixin或是否有另一种方法?

1 个答案:

答案 0 :(得分:0)

您的SASS代码是在构建应用程序时而不是在应用程序运行时编译的。您只能在CSS上无法在运行时动态提供SASS代码。

检查source code,以查看mixin添加了什么CSS。然后添加CSS。

@Directive({
  selector: "[appCustomColumn]"
})
export class CustomColumnDirective {
  @Input() amountOfColumns: number;
  @Input() totalAmountOfColumns: number;

  constructor(private el: ElementRef, private renderer: Renderer2) {}

  ngOnChanges(changes: SimpleChanges) {
    this.renderer.setStyle(
      this.el.nativeElement,
      "flex",
      "1 1 " + this.percentage(this.amountOfColumns / this.totalAmountOfColumns)
    );
    this.renderer.setStyle(
      this.el.nativeElement,
      "max-width",
      this.percentage(this.amountOfColumns / this.totalAmountOfColumns)
    );
  }

  private percentage(n: number): string {
    return Math.floor(n * 100) + "%";
  }
}