ng-template等的样式问题

我们知道ng-template ng-container ng-content是没有样式的,也是无法添加样式的,他们只是注释而已! 现在我想这样用

我的目的是在div上便捷的使用*操作符

想要达到的效果,在div上动态添加background-color,background-cover及background-size!

import { Directive, Input, Optional, ViewContainerRef, TemplateRef, Renderer2 } from '@angular/core';

@Directive({
  selector: '[appBackground]'
})
export class BackgroundDirective {
  @Input()
  set appBackgroundColor(val: string) {
    this.renderToElement('background-color', val);
  }
  @Input() set appBackgroundCover(val: string) {
    this.renderToElement('background-cover', val);
  }
  @Input() set appBackgroundSize(val: string) {
    this.renderToElement('background-size', val);
  }
  @Input() set appBackgroundImage(val: string) {
    this.renderToElement('background-image', val);
  }
  rootNodes: HTMLElement[] = [];
  constructor(
    @Optional()
    public view: ViewContainerRef,
    @Optional()
    public template: TemplateRef<any>,
    public render: Renderer2
  ) {
    const ele: any = this.view.createEmbeddedView(this.template);
    this.rootNodes = ele.rootNodes;
  }

  renderToElement(key, val) {
    this.rootNodes.map(ele => {
      if (ele.nodeType !== 8) {
        this.render.setStyle(ele, key, val);
      }
    });
  }
}
复制代码

好吧 只能这样了!有更好的方法的朋友通知我下!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值