Angular 2单击事件不起作用

时间:2017-03-22 12:59:42

标签: javascript angular

我有一个web项目并使用angular 2我的不同页面使用click事件没有任何问题但是新页面创建然后click事件在新页面中出错。

此错误

  

TypeError:self.parentView.parentView.context.changedItem不是   功能       在View_SiteConfig3.handleEvent_0(/AppModule/SiteConfig/component.ngfactory.js:137)       在View_SiteConfig3.eval(core.umd.js:12399)       在HTMLTextAreaElement.eval(platform-b​​rowser.umd.js:3223)       在ZoneDelegate.invokeTask(zone.js:265)       at Object.onInvokeTask(core.umd.js:3971)       在ZoneDelegate.invokeTask(zone.js:264)       在Zone.runTask(zone.js:154)       在HTMLTextAreaElement.ZoneTask.invoke(zone.js:335)

网站-config.html

[Sinks.SYSLF]
...
Target="logs"
FileName="logs/dsmip_%N.log"

网站-config.ts

<div *ngFor="let item of items1; let i = index;" class="col-sm-4">
    <button (click)="changedItem(item)">Test</button>
</div>

编辑:解决此方法的问题;

  

我的项目奏效了。问题是ts文件未编译然后给出“不是   功能“错误

2 个答案:

答案 0 :(得分:2)

也许这是您未提供的一段代码中的错误。

我重现你的代码:

观点:

<pre *ngIf="current">{{current}}</pre>
<div *ngFor="let item of items1; let i = index;" class="col-sm-4">
  <button (click)="changedItem(item)">Test</button>
</div> 

班级内容:

items1: number[] = [1,2,3]

current: number;

ngOnInit() {
}

public changedItem(item) {
    this.current = item;
}

constructor() {
}

这是一个有效的Plunkr:https://plnkr.co/edit/ZGI1FNB8RWN9BnnPnKgJ?p=preview

您能提供更多代码吗?

答案 1 :(得分:0)

试试这个:

网站-config.html

<div *ngFor="let item of items1; let i = index;" class="col-sm-4">
    <button type="button" (click)="changedItem($event, item)">Test</button> <!-- add type="button" -->
</div>

网站-config.ts

import { Component, OnInit } from '@angular/core'
import { Http } from '@angular/http'

@Component({
    selector: 'site-config',
    moduleId: module.id,
    templateUrl: '/site-config.html'
})
export class SiteConfig implements OnInit {

    items1: number[] = [1,2,3]

    ngOnInit(): void {
    }

    public changedItem(event: any, item: number) {
        event.preventDefault();
        //Your code...
    }

    constructor(private http: Http) {
    }
}