如何在HTML标签上打印/显示动态值?

时间:2018-07-09 04:39:06

标签: javascript html angular

所以假设我有一个像这样的Angular 4组件:

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.css'],
})
export class HomeComponent implements OnInit {
  printThisValue = 'customAttr';
  constructor(){}
}

如何在HTML标记内打印值,就像下面的代码所示:

<div class="myStyle" {{ printThisValue }} ></div>

上面的HTML代码似乎不起作用。我知道您可以像这样打印值:

<div class="myStyle">{{ printThisValue }}</div>
// or like this
<div class="myStyle {{ printThisValue }}"></div>

但是我该怎么办?

2 个答案:

答案 0 :(得分:11)

也许有更好/更容易的方法,但是您可以创建一个使用属性名称的指令,然后将其设置在元素上。

import { Directive, Input, ElementRef, AfterViewInit } from '@angular/core';

@Directive({ 
  selector: '[customAttr]' 
})
export class CustomDirective implements AfterViewInit {
    @Input() customAttr;
    constructor(private elRef: ElementRef) {}

    ngAfterViewInit() {
       this.elRef.nativeElement.setAttribute(this.customAttr, true);
    }       
}

然后您可以像<div class="myStyle" [customAttr]="printThisValue">那样使用它,它将与<div class="myStyle" customAttr>一起发出。

答案 1 :(得分:1)

检查哪个可以作为您的解决方案

案例1:有条件的属性

<div class="myStyle" [attr.attr_name]="condition"></div>



案例2:自定义(动态)属性名称

  

HTML(模板)

<div #elem1>
  {{ attachAttr }} Hi
</div>
  

示例组件的TypeScript

import { Component, ViewChildren, QueryList, AfterViewInit } from '@angular/core';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements AfterViewInit {

  myAttr = "custom_attr"; // Customize attribute name

  attachAttr: any;

  @ViewChildren('elem1') elem;

  ngAfterViewInit() {
    this.elem['first'].nativeElement.setAttribute(this.myAttr,"");
    }

}

输出将是

<div custom_attr> Hi </div>