文件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
?
答案 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-click
,ng-class
,但大多数指令没有有用的公共接口。但是,null
值很有用:
class MyDirective {
MyDirective(NgRepeatDirective repeat) {
if (repeat != null) {
// this element is being repeated
} else {
// this element is not being repeated.
}
}
}