1

Polymer.dart に記述された 2 つのカスタム コンポーネントがあり、1 つはもう 1 つの親です。親の子コンポーネントへの参照を取得したいのですが、型注釈を使用すると例外が発生します。一方、var変数を宣言するためにキーワードを使用すると、正常に機能します。

型を使用したときに表示されるエラー メッセージとスタック トレース:

キャッチされないエラー: タイプ 'ChildComponent' は、タイプ 'ChildComponent' の 'childComponent' のサブタイプではありません。

スタックトレース:

#0 ParentComponent.inserted (パッケージ:types_test_lib/parent_component.dart?1375856554489:9:67)

#1 _registerLifecycleInsert. (パッケージ:custom_element/custom_element.dart:643:21)

#2 _ZoneBase._runInZone (dart:async/zone.dart:82:17)

#3 _ZoneBase._runGuarded (dart:async/zone.dart:99:22)

#4 _ZoneBase.executeCallbackGuarded (dart:async/zone.dart:62:21)

#5 _RunAsyncZone.runAsync.. (dart:async/zone.dart:205:61)

#6 performMicrotaskCheckpoint (パッケージ:observe/src/microtask.dart:36:17)

#7 wrapMicrotask.. (パッケージ:observe/src/microtask.dart:58:35)

#8 runZonedExperimental (dart:async/zone.dart:259:53)

#9 runZonedExperimental。(dart:async/zone.dart:256:34)

#10 _ZoneBase._runInZone (dart:async/zone.dart:82:17)

#11 _ZoneBase._runUnguarded (dart:async/zone.dart:102:22)

#12 runZonedExperimental (dart:async/zone.dart:255:30)

#13 wrapMicrotask. (パッケージ:observe/src/microtask.dart:54:25)

#14 initPolymer (パッケージ:polymer/polymer.dart:72:5)

#15 メイン (.../D:/workspace/dart/types_test/web/types_test.html:7:22)

例外: タイプ 'ChildComponent' は、タイプ 'ChildComponent' の 'childComponent' のサブタイプではありません。

index.html:

<!DOCTYPE html>
<html>
  <head>
    <link rel="import" href="parent_component.html"/>
    <link rel="import" href="child_component.html"/>
    <script src="packages/polymer/boot.js"></script>
  </head>
  <body>
    <parent-component>
      <child-component/>
    </parent-component>

    <script type="application/dart">
      void main() {}
    </script>
  </body>
</html>

親コンポーネント.html:

<!DOCTYPE html>
<html>
  <body>
    <polymer-element name="parent-component" extends="div">
      <template></template>
      <script type="application/dart" src="parent_component.dart"></script>
    </polymer-element>
  </body>
</html>

親コンポーネント.dart:

import "package:polymer/polymer.dart";
import "child_component.dart";

@CustomTag("parent-component")
class ParentComponent extends PolymerElement with ObservableMixin {
  void inserted() {
    var childComponent = host.query("child-component").xtag;
    // !!! ChildComponent childComponent = host.query("child-component").xtag;
  }
}

child_component.html:

<!DOCTYPE html>
<html>
  <body>
    <polymer-element name="child-component" extends="div">
      <template></template>
      <script type="application/dart" src="child_component.dart"></script>
    </polymer-element>
  </body>
</html>

child_component.dart:

import "package:polymer/polymer.dart";

@CustomTag("child-component")
class ChildComponent extends PolymerElement with ObservableMixin {
  
}

私は何か間違ったことをしていますか?何が問題になる可能性がありますか?

返信ありがとうございます。

ガボール

4

1 に答える 1