具有参数和返回值的Angular 2 Click事件

时间:2018-03-30 00:11:15

标签: javascript angular

这个对我的通用javascript函数“openTab”的硬编码调用工作,并且openTab的返回值为false,因此代码将更改/显示制表符而不提交表单。

<button class="tablinks" onclick="return openTab(event,'tab1');">Tab 1</button>

一旦我做出这种动态,我就遇到了几个错误:

<ng-container *ngFor="let option of question.options">
    <button class="tablinks" (click)="return openTab(event, option.tabId);">{{ option.tabName }}
</ng-container>

上面的代码是我想要的地方,但解析器不喜欢“(click)= return”,当我删除返回时,我得到一个异常“_co.openTab”不是一个函数。

以下是我尝试过的事情:

<button class="tablinks" onclick="return openTab(event, 'tab1');">{{ option.tabName }}</button>

以上工作但id是硬编码的,tabName是动态的。

<button class="tablinks" onclick="return openTab(event, {{option.tabId}});">{{ option.tabName }}</button>

上面的代码给出了以下错误:出于安全原因,不允许绑定到事件属性'onclick',请使用(单击)= ...

<button class="tablinks" (click)="return openTab(event, {{option.tabId}});">{{ option.tabName }}</button>

由于返回,上面的代码不会解析:Parser Error:Unexpected token

<button class="tablinks" (click)="openTab(event, option.tabId);">{{ option.tabName }}</button>

上面的代码解析但是当你点击按钮时得到:TypeError:_co.openTab不是函数

<button class="tablinks" (myClick)="openTab(event, option.tabId);">{{ option.tabName }}</button>

上面的代码解析但是当你点击按钮没有任何反应时,openTab没有被调用,没有错误

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

语法为$eventhttps://angular.io/guide/user-input#get-user-input-from-the-event-object。以下应该有效:

<button (click)="openTab($event, option.tabId)"></button>

请注意,openTab方法必须在组件类上公开。