Обычно в 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>
Есть опечатка в функции hasClass (классы, ЦБС)? Должно ли «className» быть «классами»? –
Я думаю, что он должен работать с 'className'. Вы также можете использовать 'classList.contains()'. https://developer.mozilla.org/en-US/docs/Web/API/Element/classList. Это достаточно коротко для использования inline без метода в компоненте, но есть некоторые случаи, когда это еще не поддерживается (элементы IE и SVG, например AFAIR) –
Я имел в виду, что это должно быть return ('' + ** классы ** + '') .indexOf ('' + cls + '')> -1; Это сработало. –