我有一个需要从Dart代码访问其根元素的组件。通过在SO上阅读Differences between Angular.js and Angular.dart?并在AngularDart源代码中进行浏览,我发现我需要的是提供具有显式类型参数的构造函数。如果其中一个参数的类型为dom.Element
,则它将通过Angular注入器为我的组件root提供引用。 (在构造函数参数上没有类型会导致在Angular内部中从内到外抛出异常NoSuchMethodError : method not found: 'simpleName'
。)我的代码现在看起来像这样:
@ng.NgComponent (
selector: 'math',
templateUrl: 'packages/embarassing_name_of_my_package/math/math_component.html',
publishAs: 'ctrl'
)
class MathComponent {
ng.Scope _scope;
dom.Element _element;
ng.NgModel _ngModel;
ng.NodeAttrs _attrs;
MathComponent(this._scope, this._element, this._ngModel, this._attrs);
…
}
ng
和dom
import 'package:angular/angular.dart' as ng;
import 'dart:html' as dom;
现在的问题。我如何最好地发现喷射器对其作出反应的特殊类型?
此外,我想知道:它是否记录在某处?哪里?如果没有,AngularDart源中的哪个位置的进样器配置为这样?
答案 0 :(得分:1)
使用Module.type()
方法(或工厂,值)注册类。
您可以查看Angular.dart source - search for 'type(' like lib/core/module.dart
(请忽略type
不是函数名称的结果)
当Angular调用的构造函数或方法需要参数DI查找其注册的类型/值/工厂并使用提供的实例(值)或创建新实例(类型)或使用工厂返回的结果时注入它。