Jak pisać atrybuty danych za pomocą Angulara?

229

Kiedy próbuję użyć data attributew moim template, jak poniżej:

<ol class="viewer-nav">
    <li *ngFor="#section of sections" data-value="{{ section.value }}">
        {{ section.text }}
    </li>
</ol>

Angular 2 ulega awarii z:

WYJĄTEK: Błędy analizy szablonu: Nie można powiązać z wartością „sectionvalue”, ponieważ nie jest to znana właściwość natywna („

] data-sectionvalue = "{{section.value}}"> {{section.text}}

Oczywiście brakuje mi czegoś w składni, proszę o pomoc.

Serj Sagan
źródło

Odpowiedzi:

471

Zamiast tego użyj składni wiązania atrybutów

<ol class="viewer-nav"><li *ngFor="let section of sections" 
    [attr.data-sectionvalue]="section.value">{{ section.text }}</li>  
</ol>

lub

<ol class="viewer-nav"><li *ngFor="let section of sections" 
    attr.data-sectionvalue="{{section.value}}">{{ section.text }}</li>  
</ol>

Zobacz też :

Günter Zöchbauer
źródło
20
jak uzyskać dostęp do wartości atrybutu danych?
Sean W
4
Utwórz nowe pytanie z kodem, który pokazuje, co próbujesz osiągnąć.
Günter Zöchbauer,
10
To powinna być odpowiedź Googles nr 1 dla zapytania „Nie można powiązać z”, ponieważ nie jest to znana właściwość zapytania „” . Ten komentarz może trochę pomóc ...
netzaffin
1
@netzaffin To przydatna odpowiedź, ale wiele razy natknąłem się na błąd „nie można powiązać” i po raz pierwszy był to rzeczywisty problem / rozwiązanie.
Stack Underflow
32

O dostępie

<ol class="viewer-nav">
    <li *ngFor="let section of sections" 
        [attr.data-sectionvalue]="section.value"
        (click)="get_data($event)">
        {{ section.text }}
    </li>  
</ol>

I

get_data(event) {
   console.log(event.target.dataset.sectionvalue)
}
Max Shmelyov
źródło