什么是值(类型,null)

时间:2014-01-30 13:34:23

标签: dependency-injection dart angular-dart

文件angular.dart/lib/directive/module.dart on GitHub 有很多像

这样的行
// class NgDirectiveModule extends Module {
//  NgDirectiveModule() {

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

本声明的目的是什么 第二个参数记录为The [value] is what actually will be injected. 为什么我要注入null

1 个答案:

答案 0 :(得分:1)

您需要null,因为根注入器中不存在该指令。如果没有这些语句,尝试注入一个不存在的指令会使程序崩溃,并出现“未知类型”注入器错误。

当Angular遍历DOM创建指令时,它们在DOM漫游期间创建的子注入器中可用。 e.g。

<div ng-model="foo" my-directive>...</div>

在MyDirective指令中,您可以注入任何其他指令:

class MyDirective {
  MyDirective(NgModel model) {
    if (model.viewValue == "party") dance();
  }
}

您可以为任何指令执行此操作,例如ng-clickng-class,但大多数指令没有有用的公共接口。但是,null值很有用:

class MyDirective {
  MyDirective(NgRepeatDirective repeat) {
    if (repeat != null) {
       // this element is being repeated
    } else {
       // this element is not being repeated.
    }
  }
}