2016-12-29 36 views
1

「Angular 2無法理解View#模板中的值」我無法獲取$ 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); 
    } 
} 

當我讓酒吧服務應用程序,我拋出一個編譯錯誤:

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-點擊這裏$event in AngularDart 1.0 is not available anymore - what is the alternative?但沒」幫助。

我是新來的角,但以上的代碼應該工作吧?我查看了https://webdev.dartlang.org/angular/guide/template-syntax#!#event-binding以及使用$ event的英雄示例。看不出有什麼區別...

任何幫助表示讚賞。

回答

3

如果模板位於其自己的文件中,此代碼段可以正常工作。

但是,由於模板位於.dart文件中,因此字符串中的任何$variable將在該上下文中評估爲值variable

在這種情況下,下面的任一會,使這項工作:

  1. 逃避模板$。替換

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

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

  • 使用原始字符串作爲模板:
  • template: r''' ...template content... ''')