2016-09-05 2 views
2

Я хочу получить доступ к классу элемента, чтобы проверить, не «разваливается» или «сворачивается». Я хочу сделать что-то вроде:Angular2 Проверка класса элемента

<span *ngIf=" class == 'collapse in' "> - </span> 
<span *ngIf=" class == 'collapse' "> + </span> 

Есть ли простой способ получить класс элемента на Angular2?

ответ

5

Обычно в Angular2 настройка должна быть наоборот, модель обновляется, а представление отражает модель. Таким образом, вам не нужно обращаться к DOM, чтобы проверить его состояние. Однако, если вы должны это делать:

<span #span *ngIf="hasClass(span.className, 'collapse') && hasClass(span.className, 'in')"> - </span> 
<span #span *ngIf="hasClass(span.className, 'collapse')"> + </span> 
hasClass(classes, cls) { 
    return (' ' + classes + ' ').indexOf(' ' + cls + ' ') > -1; 
} 

https://developer.mozilla.org/de/docs/Web/API/Element/className

или

<span #span *ngIf="span.classList.contains('collapse') && span.classList.contains('in')"> - </span> 
<span #span *ngIf="span.classList.contains('collapse')"> + </span> 
+0

Есть опечатка в функции hasClass (классы, ЦБС)? Должно ли «className» быть «классами»? –

+0

Я думаю, что он должен работать с 'className'. Вы также можете использовать 'classList.contains()'. https://developer.mozilla.org/en-US/docs/Web/API/Element/classList. Это достаточно коротко для использования inline без метода в компоненте, но есть некоторые случаи, когда это еще не поддерживается (элементы IE и SVG, например AFAIR) –

+0

Я имел в виду, что это должно быть return ('' + ** классы ** + '') .indexOf ('' + cls + '')> -1; Это сработало. –

Смежные вопросы