Angular - 按钮上未触发Click事件

Bün*_*gül 0 typescript angular-cli angular

我更新后angularangular-cli,我一直面临着奇怪的问题.我有两个<div>s,我试图隐藏一个,并在点击一个按钮时显示另一个.

这是我的功能:

  ngOnInit() {
    this.goalView = this.el.nativeElement.getElementsByClassName('goal-view')[0];
    this.goalEdit = this.el.nativeElement.getElementsByClassName('goal-edit')[0];
  }

  triggerEdit(): void {
    this.goalView.style.display = 'none';
    this.goalEdit.style.display = 'block';
  }

  triggerView(save: boolean): void {
    this.goalEdit.style.display = 'none';
    this.goalView.style.display = 'block';
  }
Run Code Online (Sandbox Code Playgroud)

我的模板:

<div class="goal-view">
  ...
  <button class="ui right floated green button margin-vertical-10" (click)="triggerEdit()"><i class="ui edit icon"></i>Edit</button>
</div>
<div class="goal-edit">
  ...
  <button class="ui right floated green button margin-vertical-10"><i class="ui save icon" (click)="triggerView(true)"></i>Save</button>
</div>
Run Code Online (Sandbox Code Playgroud)

当我点击edit按钮时,它可以工作.当我点击save按钮时,它有时会起作用.但有时它没有,我应该点击30-40次按钮使其工作.我试着console.log("something")triggerView函数中,但它也是如此.有时工作,有时不工作.

我还检查event.targetclick事件:

document.addEventListener('click', function(evt) {
    console.log(evt.target);
}, false);
Run Code Online (Sandbox Code Playgroud)

这似乎很正常.<button>单击时打印正确.

什么应该是问题的任何想法?

dev*_*l69 5

通常,您不必在组件内处理直接元素访问.

相反,您应切换到使用表示元素状态的属性.

试试这个

<div class="goal-view" [hidden]="hideGoalView">
...
</div>

<div class="goal-edit" [hidden]="hideGoalEdit">
...
</div>


ngOnInit() {
   this.hideGoalView = false;
   this.hideGoalEdit = true;
}

triggerEdit(): void {
   this.hideGoalView = true;
   this.hideGoalEdit = false;
}

triggerView(save: boolean): void {
   this.hideGoalView = false;
   this.hideGoalEdit = true;
}
Run Code Online (Sandbox Code Playgroud)