Почему директива ngStyle объявлена в []?
Я абсолютный новичок в Angular 2, и у меня есть следующие трудности, связанные с правильным синтаксисом директивы ngStyle.
У меня есть этот пример (который отлично работает):
<p [ngStyle]="{backgroundColor: getColor()}">Server with ID {{ serverID }} is {{ getServerStatus() }}</p>
Я знаю, что в этом случае директива ngStyle добавляет что-то вроде:
style="background-color: green;"
в моем HTML-абзаце.
Мое сомнение связано с правильным значением этого синтаксиса. Почему это:
[ngStyle]="{backgroundColor: getColor()}"
и не
ngStyle="{backgroundColor: getColor()}"
Почему это в [...]? Что это значит?
2 ответа
Это называется привязкой свойств. С помощью скобок компилятор пытается оценить выражение. Без этого вы просто передаете строку.
Итак, с помощью скобок вы передаете объект javascript:
{
backgroundColor: getColor()
}
Посредством чего компилятор вызовет getColor()
метод из компонента, чтобы получить правильный цвет.
С другой стороны, и здесь не будет темы, но если вы хотите передать строку при использовании скобок, вы должны заключить их в одинарные кавычки:
<div [property]="'hiii'"></div>
Angular 2 имеет 3 типа директив:
- Директивы атрибутов.
- Структурные директивы.
- Компоненты.
ngStyle
является директивой атрибута. И все директивы атрибутов, которым мы должны передавать / присваивать значения, записаны в квадратных скобках. Например, встроенная директива NgStyle в руководстве "Синтаксис шаблона" может изменять несколько стилей элемента одновременно.