"Angular 2 could not understand the value in View#template" 使用 $event

"Angular 2 could not understand the value in View#template" using $event

我无法让 $event 工作。示例:

import 'package:angular2/core.dart';

@Component(
    selector: 'my-app', 
    template: '''
        <h1>{{title}}</h1>
        <button (click)="onTest($event)">testing</button>
    ''')
class AppComponent {
    String title = 'Testing event';

    onTest(event) {
        print(event);
    }
}

当我让 pub 为应用提供服务时,我抛出了构建错误:

Build error:
Transform DirectiveProcessor on file_transfer|lib/app_component.dart threw error: Angular 2 could not understand the value in View#template.
'''
        <h1>{{title}}</h1>
        <button (click)="onTest($event)">testing</button...
package:angular2/src/transform/common/type_metadata_reader.dart 164:5   _expressionToString
package:angular2/src/transform/common/type_metadata_reader.dart 920:17  _CompileTemplateMetadataVisitor._populateTemplate
package:angular2/src/transform/common/type_metadata_reader.dart 901:9   _CompileTemplateMetadataVisitor.visitNamedExpression
package:analyzer/src/dart/ast/ast.dart 7455:15                          NamedExpressionImpl.accept
...

我也尝试过将 (click) 更改为 ng-click,如此处 $event in AngularDart 1.0 is not available anymore - what is the alternative? 但没有帮助。

我是 angular 的新手,但是上面的代码 应该 可以工作,对吗?我查看了 https://webdev.dartlang.org/angular/guide/template-syntax#!#event-binding 和英雄示例,其中也使用了 $event 。看不出有什么区别...

感谢任何帮助。

如果模板在其自己的文件中,则此代码段可以正常工作。

但是,由于模板位于 .dart 文件中,因此字符串中的任何 $variable 都将被计算为该上下文中 variable 的值。

在这种情况下,以下任何一项都可以使这项工作:

  1. 转义模板中的 $。替换

<button (click)="onTest($event)">testing</button>

<button (click)="onTest($event)">testing</button>

  1. 使用原始字符串作为模板:

template: r''' ...template content... ''')