在DartAngular 1.0&;飞镖1.7

在DartAngular 1.0&;飞镖1.7,dart,angular-dart,Dart,Angular Dart,我正在尝试在AngularDart 1.0中创建一个组件: index.html: 数据发生器前端 姓名: 你好{{myProperty}} index.dart: 导入“包:角度/角度.dart”; 导入“包:角度/应用程序\u工厂.dart”; 导入“my_form.dart”; @可注射() 类根上下文{ 字符串myProperty=“jeahhhhh”; void method1(){ 打印(“方法1”); } } main(){ 应用程序工厂() .rootContextType

我正在尝试在AngularDart 1.0中创建一个组件:

index.html:


数据发生器前端
姓名:

你好{{myProperty}}
index.dart:

导入“包:角度/角度.dart”;
导入“包:角度/应用程序\u工厂.dart”;
导入“my_form.dart”;
@可注射()
类根上下文{
字符串myProperty=“jeahhhhh”;
void method1(){
打印(“方法1”);
}
}
main(){
应用程序工厂()
.rootContextType(RootContext)
.addModule(新的DateFormModule())
.run();
}
my_form.html


年:
我的飞镖

导入“包:角度/角度.dart”;
@组成部分(
选择器:“我的表格”,
templateUrl:“my_form.html”)
类DateFormComponent{}
类DateFormModule扩展模块{
DateFormModule(){
绑定(DateFormComponent);
}
}
请纠正我说的话

我有一个类“RootContext”,它包含属性“myProperty”和方法“method1”。该类由@Injectable()注释,它使该类能够由angulardart处理。所有属性/方法都可以在{{}中的html、ng模型、ng单击中使用。。。。最后,rootContextType(RootContext)使RootContext成为应用程序的RootContext。对吗


现在我想创建一个组件。(my_form.dart和my_form.html)我成功地显示了我的组件的html,这非常棒

我想用“1980”这样的值预先填充输入(带有占位符=“begin”的输入) 以下是我的尝试:

我的省道:

导入“包:角度/角度.dart”;
@组成部分(
选择器:“我的表格”,
templateUrl:“my_form.html”)
类DateFormComponent{
字符串年份_begin=“1980”;
}
类DateFormModule扩展模块{
DateFormModule(){
绑定(DateFormComponent);
}
}
my_form.html


年:
那次事故是: ... 缺少的getter:(o)=>o.years\u begin

好的,让我们创建一个getter:String get years\u begin=>\u years\u begin; 但还是有同样的错误。。。 因此@Component()不像@Injectable(),它不会打开视图要处理的所有字段/方法。那么如何打开它们呢?看起来像是@NgAttr(attrName), @NgOneWay(attrName),@NgTwoWay(attrName)执行此任务

让我们试试这个

类DateFormComponent{
@NgAttr(“开始的年份”)
字符串年份_begin=“1980”;
}
-->没有其他异常,但该字段未填充

类DateFormComponent{
@NgOneWay(“开始的年份”)
字符串年份_begin=“1980”;
}
-->完成任务

类DateFormComponent{
@NgTwoWay(“年开始”)
字符串年份_begin=“1980”;
}
-->也

是否要查看NgOneWay同步模型? NgTwoWay是否同步模型到视图和视图到模型? ngAttr似乎更像是在HTML中传递的属性,就像在init时间一样

现在让我们切换到方法,这是我的找零

my_form.html


年:
我的飞镖

导入“包:角度/角度.dart”;
@组成部分(
选择器:“我的表格”,
templateUrl:“my_form.html”)
类DateFormComponent{
@NgTwoWay(“年开始”)
字符串年份_begin=“1980”;
方法2(){
打印(“方法2”);
}
}
类DateFormModule扩展模块{
DateFormModule(){
绑定(DateFormComponent);
}
}
它崩溃了:method2没有getter。 对于方法,NgOneWay ngTwoway的等价物是什么

不要犹豫给我关于angulardart&dart的最新链接和信息,因为即使是angulardart网站也没有很多最新的文档

我有一个类“RootContext”,它包含属性“myProperty”和方法“method1”。该类由@Injectable()注释,它使该类能够由angulardart处理。所有属性/方法都可以在{{}中的html、ng模型、ng单击中使用。。。。最后,rootContextType(RootContext)使RootContext成为应用程序的RootContext。对吗

@Injectable()
您还需要添加一个transformers配置来实现这一点
有关示例,请参见。
(Angular.dart transformers也需要用于开发,而不仅仅是用于生产)

多亏了我找到了一个关于“method2”问题的答案

转换器遇到了问题,因此我们需要传递额外的信息:在我的组件中,我将exportExpressions属性设置为:

我的飞镖

导入“包:角度/角度.dart”;
@组成部分(
选择器:“我的表格”,
templateUrl:“my_form.html”,
exportExpressions:const[“method2”])
类DateFormComponent{
@NgTwoWay(“年开始”)
字符串年份_begin=“1980”;
方法2(){
打印(“方法2”);
}  
}
类DateFormModule扩展模块{
DateFormModule(){
绑定(DateFormComponent);
}
}

我认为这与摇树有关,因此“方法2”Angular.dart 1.0刚刚发布,教程和文档还需要更新。这是angular.dart.tutorial的拉取请求,其中包含angular.dart 1.0的更新,太棒了!非常感谢!