我正在尝试将组件的子字段绑定到输入字符串。这是代码的简化版本。
my_component.dart
class A {
String text;
}
@ng.Component(
selector: 'my-component'
)
class MyComponent {
A a;
}
my_component.html
<div>
{{a.text}}
Name: <input type="text" ng-model="a.text">
</div>
这是我在输入框中输入任何内容后得到的错误。
错误
type '_LinkedHashMap' is not a subtype of type 'A' of 'value'.
可以绑定AngularDart中的子字段吗?如果是这样,这样做的正确方法是什么?
修改
现在可以添加像这样的构造函数
MyComponent(this.a);
但我仍在与这个更普遍的案件作斗争
@ng.Injectable()
class B {
String text;
}
@ng.Injectable()
class A {
B b;
A (this.b);
}
@ng.Component(
selector : "my-component",
template: '{{a.b.text}} Name: <input type="text" ng-model="a.b.text">'
)
class MyComponent {
A a;
MyComponent(this.a);
}
现在的错误是
Missing getter: (o) => o.b
...
Exception: The null object does not have a method 'call'.
NoSuchMethodError: method not found: 'call'
Receiver: null
Arguments: [Instance of 'A']
修改2
我的模块配置是
class MyAppModule extends Module {
MyAppModule() {
bind (MyComponent);
bind (A);
bind (B);
}
}
//Inside main()
applicationFactory()
.addModule(new MyAppModule())
.run();
pubspec.yaml
transformers:
- redstone_mapper
- angular:
html_files:
- lib/client/models/evento/evento.html ##Actually not using this in the example
编辑3
我在AngularDart上为任何感兴趣的人打开了this issue。
编辑4
添加/更改它可以使其正常工作
@ng.Component
(
selector : "my-component",
template: '{{text}} Name: <input type="text" ng-model="text">'
)
class EventoComponent
{
...
String get text => a.b.text;
set text (String v) => a.b.text = v;
.
}
但实际上已经杀死了结构,因为你必须自己压扁它。