diff --git a/FAQ.md b/FAQ.md
index fbcf29e..b0f2287 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -4,3 +4,10 @@
## How to disable plotly events ?
It's possible disable some plotly events returning `false` in its event. Please see issue: https://github.com/plotly/angular-plotly.js/issues/52#issuecomment-476018478
+
+
+
+## Why using `(plotly_click)` instead of `(click)` ?
+
+Angular uses the `(click)` directive to itself. If we use the `click` name as event alias to `plotly_click` we might get unexpected behaviour from both angular and plotly.js. We believe it is simpler to just avoid using the same name is better.
+Please see issue: https://github.com/plotly/angular-plotly.js/issues/63
diff --git a/src/app/demo/fancyplot/fancyplot.component.html b/src/app/demo/fancyplot/fancyplot.component.html
index b965f27..c8400b6 100644
--- a/src/app/demo/fancyplot/fancyplot.component.html
+++ b/src/app/demo/fancyplot/fancyplot.component.html
@@ -1,3 +1,3 @@
diff --git a/src/app/demo/fancyplot/fancyplot.component.ts b/src/app/demo/fancyplot/fancyplot.component.ts
index 2ac0b31..1d7ea56 100644
--- a/src/app/demo/fancyplot/fancyplot.component.ts
+++ b/src/app/demo/fancyplot/fancyplot.component.ts
@@ -20,4 +20,8 @@ export class FancyplotComponent implements OnInit {
ngOnInit() {
}
+ onClick(event: any) {
+ console.log('click!');
+ }
+
}
diff --git a/src/app/shared/plot/plot.component.ts b/src/app/shared/plot/plot.component.ts
index 25391b6..7257af1 100644
--- a/src/app/shared/plot/plot.component.ts
+++ b/src/app/shared/plot/plot.component.ts
@@ -63,6 +63,7 @@ export class PlotComponent implements OnInit, OnChanges, OnDestroy, DoCheck {
@Output() beforeExport = new EventEmitter();
@Output() buttonClicked = new EventEmitter();
@Output() click = new EventEmitter();
+ @Output() plotly_click = new EventEmitter();
@Output() clickAnnotation = new EventEmitter();
@Output() deselect = new EventEmitter();
@Output() doubleClick = new EventEmitter();
@@ -83,7 +84,7 @@ export class PlotComponent implements OnInit, OnChanges, OnDestroy, DoCheck {
@Output() unhover = new EventEmitter();
public eventNames = ['afterExport', 'afterPlot', 'animated', 'animatingFrame', 'animationInterrupted', 'autoSize',
- 'beforeExport', 'buttonClicked', 'click', 'clickAnnotation', 'deselect', 'doubleClick', 'framework', 'hover',
+ 'beforeExport', 'buttonClicked', 'clickAnnotation', 'deselect', 'doubleClick', 'framework', 'hover',
'legendClick', 'legendDoubleClick', 'relayout', 'restyle', 'redraw', 'selected', 'selecting', 'sliderChange',
'sliderEnd', 'sliderStart', 'transitioning', 'transitionInterrupted', 'unhover'];
@@ -98,6 +99,13 @@ export class PlotComponent implements OnInit, OnChanges, OnDestroy, DoCheck {
const figure = this.createFigure();
this.initialized.emit(figure);
});
+
+
+ if (this.plotly.debug && this.click.observers.length > 0) {
+ const msg = 'DEPRECATED: Reconsider using `(plotly_click)` instead of `(click)` to avoid event conflict. '
+ + 'Please check https://github.com/plotly/angular-plotly.js#FAQ';
+ console.error(msg);
+ }
}
ngOnDestroy() {
@@ -188,6 +196,11 @@ export class PlotComponent implements OnInit, OnChanges, OnDestroy, DoCheck {
plotlyInstance.on(eventName, (data: any) => (this[name] as EventEmitter).emit(data));
});
+ plotlyInstance.on('plotly_click', (data: any) => {
+ this.click.emit(data);
+ this.plotly_click.emit(data);
+ });
+
this.updateWindowResizeHandler();
}, err => {
console.error('Error while plotting:', err);
diff --git a/src/app/shared/plotly.service.ts b/src/app/shared/plotly.service.ts
index 59b00d9..f10faec 100644
--- a/src/app/shared/plotly.service.ts
+++ b/src/app/shared/plotly.service.ts
@@ -1,5 +1,6 @@
import { Injectable } from '@angular/core';
import { Plotly } from './plotly.interface';
+import { environment } from '../../environments/environment';
type PlotlyName = 'Plotly' | 'ViaCDN' | 'ViaWindow';
@@ -40,6 +41,10 @@ export class PlotlyService {
}
}
+ public get debug(): boolean {
+ return environment.production === false;
+ }
+
public getInstanceByDivId(id: string): Plotly.PlotlyHTMLElement | undefined {
for (const instance of PlotlyService.instances) {
if (instance && instance.id === id) {