Вам нужен null
, потому что директива не существует в корневом инжекторе. Без этих операторов попытка внедрить несуществующую директиву приведет к сбою программы с ошибкой инжектора "неизвестного типа".
Когда Angular проходит директивы создания DOM, они становятся доступными в дочерних инжекторах, которые создаются во время обхода DOM. например
<div ng-model="foo" my-directive>...</div>
В директиве MyDirective вы можете внедрить любую другую директиву:
class MyDirective {
MyDirective(NgModel model) {
if (model.viewValue == "party") dance();
}
}
Вы можете сделать это для любой директивы, например. ng-click
, ng-class
, однако большинство директив не имеют полезных общедоступных интерфейсов. Но значение null
полезно:
class MyDirective {
MyDirective(NgRepeatDirective repeat) {
if (repeat != null) {
// this element is being repeated
} else {
// this element is not being repeated.
}
}
}
person
James deBoer
schedule
30.01.2014