代码之家  ›  专栏  ›  技术社区  ›  Fallenreaper

ElementRef没有样式实例

  •  0
  • Fallenreaper  · 技术社区  · 7 年前

    我正在编写一些代码,用dart更新div的位置。

    html如下所示:

    <div (mousedown)="mouseDownFunction($event)"></div>
    <div #selection></div>
    

    飞镖看起来像:

    @ViewChild("selection")
    DivElement selectionDiv;
    
    mouseDownFunction(mouse){
      selectionDiv.style.left = "${mouse.position.left}px";
    }
    

    当这种情况发生时,它会尝试调用 style 在selectionDiv上,但表示ElementRef没有style实例。

    enter image description here

    2 回复  |  直到 7 年前
        1
  •  3
  •   Günter Zöchbauer    7 年前

    这是预期的功能。 selectionDiv DivElement ,但 ElementRef dart:html 元素,使用getter selectionDiv.nativeElement .

        2
  •  2
  •   just95    7 年前

    answer 问题是 selectionDiv ElementRef DivElement .

    checked mode 可以帮助您在将来尽早发现此类错误。默认情况下,Dartium不执行类型检查。如果希望从类型注释中获益,则需要 specify the --checked VM flag 发射Dartium时。

    DART_FLAGS='--checked' path/to/dartium
    

    您的代码现在应产生以下错误消息:

    ORIGINAL EXCEPTION: type 'ElementRef' is not a subtype of type 
    'DivElement' of 'value' where
      ElementRef is from package:angular2/src/core/linker/element_ref.dart
      DivElement is from dart:html
    

    上面的错误消息提供的堆栈跟踪可以告诉您是哪个变量导致了错误。

    ORIGINAL STACKTRACE:
    #0      MyComponent.selectionDiv= (package:my_package/my_component.dart:15:14)