为什么我不能在Angular模板中定义内联函数?怎么办呢?

Dan*_*ane 6 angular

我正在使用Angular 2并且是新手.我想调用一个小按钮单击功能.所以我尝试这样做(也许是我来自React背景的bcos):

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

我使用了IIFE作为(click)属性.但它没有用.为什么它不起作用,有没有其他方法来声明一个匿名函数并在按钮点击时调用它?
我真正想做的是分配一个这样的值:(val) => { value = val }

Kir*_*kin 13

如果您只提供要让Angular评估的表达式,这样可以正常工作.如果您的组件上有属性,例如value,您可以使用以下内容:

<button class="btn btn-primary" (click)="value = 'hi'">
    Click Me
</button>
Run Code Online (Sandbox Code Playgroud)

Angular基本上只调用你提供的代码,就像它在函数内部一样(这是一个很大的简化,但适用于你的目的).