【问题标题】:Assign css class in the injected html in Angular 7在Angular 7中注入的html中分配css类
【发布时间】:2019-07-02 20:00:07
【问题描述】:

我想根据一些计算来分配 css 类。这是我的组件类:

@Component({
  selector: 'app-render-json',
  template: `<div [innerHtml]="html | safeHtml"></div>`,
  styleUrls: ['./render-json.component.css'] , encapsulation: ViewEncapsulation.ShadowDom
})

export class RenderJsonComponent {
  @Input() myJson: any;
  html = ``;
  static levelDeep = 1
  
  ngOnInit() {
    this.renderJson(this.myJson)
  }
  
  renderJson(obj) {
    RenderJsonComponent.levelDeep = RenderJsonComponent.levelDeep + 1
		for(var key in obj) {
      if(key != 'id') {
        this.html = this.html + `<div class="col-md-${RenderJsonComponent.levelDeep}  col-md-offset-${RenderJsonComponent.levelDeep}">${obj[key]}</div>`
        // This does not work but I want to do something like this
      }
		}
	}
}

基本上,我需要使用偏移类通过引导程序以 GRID 样式呈现一些 JSON,但这在某种程度上不起作用。任何帮助表示赞赏。

【问题讨论】:

  • 控制台中this.html的输出是什么?
  • 为问题添加标签时,会显示标签信息。 angularjs 的标签信息特别指出它不应该用于 Angular >= 2。
  • html 被渲染,但类没有应用到它。

标签: css angular angular7


【解决方案1】:
@Component({
  selector: 'app-render-json',
  template: `<div [innerHtml]="safeHtml"></div><div *ngFor="jsonElements as element" class="element.class">element.obj</div>`,
  styleUrls: ['./render-json.component.css'] , encapsulation: ViewEncapsulation.ShadowDom
})

export class RenderJsonComponent {
  @Input() myJson: any;
  myLevelDeep = 1;
  jsonElements = [];

  ngOnInit() {
    this.renderJson(this.myJson)
  }

  renderJson(obj) {
    this.myLevelDeep = RenderJsonComponent.levelDeep + 1
        for(var key in obj) {
      if(key != 'id') {
        jsonElements.push({class:"col-md-" + this.myLevelDeep + " col-md-offset-" + this.myLevelDeep, obj: obj[key]});
      }
        }
    }
}

【讨论】:

  • 答案有几个问题。首先它不会注入 html 对象,因为我们的 html 对象是空的并且没有被任何 div 附加。我尝试了你的方法,但没有任何 json 打印出来。您能否为小提琴答案提供一个 pluner,以便使用一些示例 5-6 级深度嵌套 json 演示该答案是正确的。
  • 是的,这不是附加几个元素,这只是隐藏或显示一个元素。第一眼我没看懂。我将重构这个例子。
猜你喜欢
  • 2020-03-16
  • 2019-07-04
  • 2019-04-21
  • 1970-01-01
  • 2023-04-06
  • 2020-04-02
  • 2020-12-18
  • 1970-01-01
  • 2019-10-08
相关资源
最近更新 更多