【问题标题】:addEventListener not working in angular selectaddEventListener 在角度选择中不起作用
【发布时间】:2020-05-26 23:20:38
【问题描述】:

我正在使用primeng 制作一个表格,并创建了一个三行三列的表格,每个数据都是静态的..

尽管我使用了外部库,但最后我还是尝试仅遍历 DOM..

<p-table [value]="getData()">
      <ng-template pTemplate="header">
        <tr>
    <th>Head 1</th>
    <th>Head 2</th>
    <th>Head 3</th>
        </tr>
    </ng-template>
    <ng-template pTemplate="body" let-car>
          <tr>
    <td>Data 1.1</td>
    <td>Data 1.2</td>
    <td><select><option>Select</option><option value="test1">Opt 1</option><option value="test2">Opt 2</option></select></td>
  </tr>
  <tr>
    <td>Data 2.1</td>
    <td>Data 2.2</td>
    <td><select><option>Select</option><option value="test1">Opt 1</option><option value="test2">Opt 2</option></select></td>
  </tr>
          <tr>
    <td>Data 3.1</td>
    <td>Data 3.2</td>
    <td><select><option>Select</option><option value="test1">Opt 1</option><option value="test2">Opt 2</option></select></td>
  </tr>
    </ng-template>
</p-table>

现在我需要获取最后一列选中项的选择框值,为此我写了addEventListener之类的,

select.addEventListener('change', this.onclick.bind(this))

但它不起作用..onclick() 方法不会触发..

我认为问题可能是由ngAfterViewInit 引起的,但如果我在ngOnInit 内提供它,则 dom 元素本身无法访问..

工作 Stackblitz: https://stackblitz.com/edit/primeng-tables-dhzmbt

请帮我在选择框中实现addEventListener,仅使用纯JS/TS方式,模板不能修改..

【问题讨论】:

  • 为什么不能在模板中的选择元素处使用 (click)="onClick()"?
  • @katzz0,这是给定的要求,我需要选择 dom 元素,然后需要像我上面尝试的那样在 typescript 端单独制作 addEventListener .. 我唯一需要的是让工作添加的事件监听器..
  • changeDetection: ChangeDetectionStrategy.OnPush 添加到您的组件metadata 以防止重新渲染。每个更改检测周期的角度重新渲染视图,即 DOM 在渲染之间不可靠
  • @StasAmasev,您能否通过ChangeDetectionStrategy.OnPush 帮助我实现结果并提供适当的示例..

标签: javascript html angular typescript dom-events


【解决方案1】:

...

<td>
 <select(change)="onChange($event)>
  <option>Select</option>
  <option value="test1">Opt 1</option>
  <option value="test2">Opt 2</option>
 </select>
</td>

....

在ts文件中

...

onChange(event) {
   console.log(event)
}

...

【讨论】:

  • 我已经明确提到我无法在模板中更改任何内容。更改只能在.ts 文件中进行。
猜你喜欢
  • 1970-01-01
  • 2020-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-17
  • 2019-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多