Так что ваша проблема прямо здесь
callback: function(chart){ // note the callback function
chart.discretebar.dispatch.on('elementClick', (angularEvent,e) => {
console.log("Inside click");
this.router.navigate(["/app-new-component2"]);
});
}
Итак, где ваш обратный вызов, вы используете es5 function()
, что означает, что что-то внутри этой функции не будет содержать глобальную область действия this
, а вместо этого создаст новую область. Так что в этом случае, когда вы делаете this.router.navigate
, что вы не ссылаетесь на компонент (глобальный this
), вы ссылаетесь на область действия this
, которая не имеет router
. Итак, что вы хотите сделать, это,
callback: (chart) => {
chart.discretebar.dispatch.on('elementClick', (angularEvent,e) => {
console.log("Inside click");
this.router.navigate(["/app-new-component2"]);
});
}
с использованием функции ES6 (жирная стрелка) () => {}
сохранит глобальную область действия this
, которая позволит вам использовать маршрутизатор.