Как распечатать/показать динамическое значение в теге HTML?
Поэтому, полагая, что у меня есть компонент 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>
Но как мне это сделать?
Ответы
Ответ 1
Может быть лучший/более простой способ сделать это, но вы можете создать директиву, которая берет имя атрибута, а затем устанавливает его на элементе.
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>
.
Ответ 2
Проверьте, какой из них может быть вашим решением
Случай 1: Условный атрибут
<div class="myStyle" [attr.attr_name]="condition"></div>
Случай 2: имя адаптированного (динамического) имени
HTML (Шаблон)
<div #elem1>
{{ attachAttr }} Hi
</div>
ТипScript-компонента образца
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>