所以假设我有一个像这样的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>
但是我该怎么办?
答案 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>