что такое значение (тип, ноль) для

Файл angular.dart/lib/directive/module .dart на GitHub содержит множество строк типа

// class NgDirectiveModule extends Module {
//  NgDirectiveModule() {

    value(NgADirective, null); // <--

Какова цель этого оператора.
Второй параметр задокументирован как The [value] is what actually will be injected. Почему я хочу, чтобы null вводился?


person Günter Zöchbauer    schedule 30.01.2014    source источник


Ответы (1)


Вам нужен 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
comment
Большое спасибо, я думаю, мне еще предстоит кое-что узнать о том, как DI работает в Angular. - person Günter Zöchbauer; 30.01.2014
comment
И мы тоже! У Войты впереди отличная работа: youtube.com/watch?v=_OGGsf1ZXMs - person James deBoer; 30.01.2014