首页 文章

“使用$ event,Angular 2无法理解View#template中的值”

提问于
浏览
1

我不能让$ 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
...

我也尝试将(点击)更改为ng-click,因为这里$event in AngularDart 1.0 is not available anymore - what is the alternative?但它没有帮助 .

我是棱角分明的新手,但上面的代码应该有用,对吗?我看了https://webdev.dartlang.org/angular/guide/template-syntax#!#event-binding以及使用$ event的英雄示例 . 看不出有什么不同......

任何帮助表示赞赏 .

1 回答

  • 3

    如果模板位于自己的文件中,此代码段将正常工作 .

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

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

    • 转义模板中的 $ . 更换

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

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

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

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

相关问题