2017-11-23 7 views
0

私は角度2を使用しており、それは初めてです。私はボタンをクリックするための小さな関数を呼び出すしたいと思いました。だから私は(私が反応背景から来るかもしれないbcos)これをやってみました:Angularテンプレート内にインライン関数を定義できないのはなぜですか?どのようにそれを行うには?

<button class="btn btn-primary" (click)="(() => { console.log('hi') })()"> 
    Click Me 
</button> 

私は(click)属性の生命維持を使用しました。しかし、それは動作しませんでした。なぜ動作しないのですか?また、無名関数を宣言し、ボタンをクリックして呼び出す方法はありますか?
実際に何をしたいのですか?(val) => { value = val }

答えて

1

角度を評価する式を入力するだけで問題ないです。たとえば、コンポーネントにプロパティがある場合。 value、あなただけ次を使用することができます。それは関数の内部であるかのように

<button class="btn btn-primary" (click)="value = 'hi'"> 
    Click Me 
</button> 

角度は、本質的にちょうど(それは大きな簡素化ですが、自分の目的のために働く)あなたが提供するコードを呼び出します。

+0

うわー私をクリックしてください!それが簡単なのか分からなかった...私はいつも関数が必要であると思っていた – Dane

+1

関数は、実行されるコードをUI側からどのように分離するかによって、一般的に受け入れられているベストプラクティスである可能性があります。しかし、あなたの例のようなケースでは、関数全体を作成するのはちょっとだと主張する人もいます。それは主に意見の問題です。 –

-1

Angularでは、関数を呼び出すときにcomponent.tsファイル内の特定の関数をチェックします。

たとえば、コンソールを呼び出すと、logという名前のオブジェクトが対応するcomponent.tsファイル内のそのオブジェクトの関数として検索され、コンソールが未定義になります。

コンポーネントファイルにlogという名前の関数を作成し、必要に応じてテンプレート内で呼び出すことができます。

component.ts

log(value) { 
    console.log(value); 
} 

HTMLテンプレート

<button class="btn btn-primary" (click)="log('message')"> 

+0

私はそれがコンポーネント**内の関数を宣言することなしに**明らかになったと思った** – Dane

+0

私はそれを見ることができないので、私は解決策を与えて疲れた。 –

関連する問題