2017-01-11 5 views
3

何とか次のことが可能かどうか疑問です。質問はconsole.infoに限らず、すべてのJavascriptの機能に限定されています。テンプレートクリックイベントからコンソールにAngular2を書く

<a (click)="console.info(foo)">click me doesn't work</a> 

Cannot read property 'info' of undefined

あなたのComponentの内側にそのための余分な関数を作成する必要がありますのでテンプレートは、コンポーネントのプロパティをのみアクセスできるようだ:

<a (click)="executeConsole(val)">execute console does work</a> 

executeConsole(val) { 
    console.info(val); 
} 

であなたのような何かを行うことができますリアクトそれ:

<a onClick={() => console.info('it works')}>it works</a> 

答えて

2

コンポーネントのtsコードのコンソールオブジェクトにアクセスできるプロパティを宣言し、それを呼び出します。たとえば...

をすることができますあなたのビューで...あなたのコンポーネントTSにコンソールオブジェクトにプロパティを設定するコンポーネントのコンストラクタで

public c : any; 

...

this.c = console; 

を宣言します今すぐ電話info()...

<a (click)="this.c.info("Hello world")">click me</a> 
+1

私は、これよりも優れたものがあることを期待していました。 – zurfyx

+0

コンポーネントのtsコードを変更せずにそれを実行できるのであれば、私は同意します。 –

1

あなたのコンソール用のサービスラッパーを作成し、スポンティング・コンポーネント。これをコンストラクタのtypescriptで行うと、テンプレートからアクセスできるパブリックメンバが自動的に作成されるため、コンストラクタパラメータとして追加するだけです。

「グローバル」スコープを使用できないようです。例えば、 here

関連する問題