#javascript #html #css #angular #typescript
Вопрос:
Я хотел бы обновить свойство индикатора выполнения aria-valuenow индикатора выполнения начальной загрузки, используя привязку данных в Angular, но мне трудно понять, какие команды использовать
<div class="row">
<div class="col-12 col-xl-3 col-lg-4 col-sm-6" *ngFor="let corso of corsi">
<div class="card">
<img class="card-img-top w-100 d-block" src="../assets/img/pexels-pixabay-247791.jpg">
<div class="card-body">
<div class="card-img-overlay">
<h3>{{corso.titolo}}</h3>
</div>
<p class="card-text pb-2 fw-bold">Avanzamento corso: {{corso.progresso}}%</p>
<div class="progress">
<div class="progress-bar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 80%;"></div>
</div>
<p class="card-text pt-3">Data scadenza: {{corso.scadenza}}</p>
</div>
<button class="btn btn-primary d-flex align-items-center" type="button">Vedi corso</button>
</div>
</div>
</div>
Я попытался получить атрибут из DOM с помощью element.getElementsByClassName
, так как я повторяю макет массива, но я не могу понять, как получить доступ к массиву HTMLCollection
import { Component, OnInit } from '@angular/core';
import { CORSI } from '../../mock-corsi'
@Component({
selector: 'app-card',
templateUrl: './card.component.html',
styleUrls: ['./card.component.css']
})
export class CardComponent implements OnInit {
corsi = CORSI;
constructor() {
console.log("Constructor partito")
var bar = document.getElementsByClassName('progress-bar');
console.log(bar);
}
ngOnInit(): void { }
}
Это очень простое приложение, но я хотел бы понять, как получить доступ к таким данным, спасибо.
Ответ №1:
Если все, что вы хотите сделать, это сделать aria-valuenow
атрибут динамичным, вы можете сделать это, используя этот синтаксис.
[attr.aria-valuenow]="valueNow"
где valueNow
будет указано в вашем .ts
файле.
Ваш HTML теперь будет выглядеть так:
<div class="progress-bar" [attr.aria-valuenow]="valueNow" aria-valuemin="0" aria-valuemax="100" style="width: 80%;"></div>
и в вашем .ts
досье вы можете иметь
valueNow : number = 80;
Комментарии:
1. SO хочет знать
valueNow
, что установлено по умолчанию в OnInit (80 может быть 100 и т. Д.)2. Отчасти я хотел бы сделать его динамичным, как и другие фрагменты {{кода}} в HTML, получая данные из массива «corsi» в .ts и помещая их в элемент div индикатора выполнения. Ваше решение не работает в банкомате.
3. Можете ли вы воссоздать проблему в stackblitz?
4. Я новичок в stackblitz, поэтому позже я посмотрю, в любом случае проблема только в компоненте, который вы видите в моем посте. Есть ли что-то конкретное, что вы хотите увидеть, чтобы понять больше? Спасибо, что уделили мне время
Ответ №2:
Используется [attr.somthing]
для установки attr с привязкой . для установки текущего значения используйте ссылку #
с getAttribute
В HTML
<div #ref [attr.aria-valuenow]="setAttr(ref)"></div>
В ТС
setAttr(ref){
return ref.getAttribute('aria-valuenow') 20;
}