自定义组件的动态创建

Dynamic creation of custom components

我正在尝试动态创建我创建的自定义组件的实例。我认为正确的方法是使用 new Element.tag('custom-component');,但这会为我产生以下堆栈跟踪:

method not found: 'constructor' on null
  my_component_test.dart.browser_test.dart.js 21834:17  J.$index$asx
  my_component_test.dart.browser_test.dart.js 22460:14  <fn>
  unparsed                                              my_component_test.dart.browser_test.dart.js 22583:42  Isolate.prototype.(anonymous function)
  my_component_test.dart.browser_test.dart.js 16549:24  dart._setUpPropertyChanged
  my_component_test.dart.browser_test.dart.js 16521:28  $async$initPolymer
  my_component_test.dart.browser_test.dart.js 3319:13   _wrapJsFunctionForAsync_closure._captured_protected_1
  my_component_test.dart.browser_test.dart.js 4292:14   _wrapJsFunctionForAsync_closure.dart._wrapJsFunctionForAsync_closure.call
  my_component_test.dart.browser_test.dart.js 5945:18   dart._rootRunUnary
  my_component_test.dart.browser_test.dart.js 8620:41   _CustomZone.dart._CustomZone.runUnary
  my_component_test.dart.browser_test.dart.js 6906:80   _Future__propagateToListeners_handleValueCallback.dart._Future__propagateToListeners_handleValueCallback.call[=10=]

但是,使用 Element.html('<custom-component></custom-component') 和覆盖的空 TreeSanitizer,如此处所述 http://japhr.blogspot.de/2013/11/dynamically-generating-polymerdart.html,一切正常,测试通过:

class NullTreeSanitizer implements NodeTreeSanitizer {
  void sanitizeTree(node) {}
}
componentUnderTest = new Element.html('<my-component></my-component>', treeSanitizer: new NullTreeSanitizer());

我的设置可能有什么问题?如果我禁用检查,该组件似乎已正确实施和注册,因为它可以正常工作。

当我 运行 没有 pub serve 的测试时,我可以重现错误消息。

运行 来自包含 pubspec.yaml 文件的目录

pub serve test

(它应该打印它在端口 8080 上侦听) 然后 运行 测试

pub run test -pdartium --pub-serve=8080