Добавить класс к оси, если у него есть текст - PullRequest
1 голос
/ 19 января 2020

У меня есть демо здесь

Это простая гистограмма D3 в приложении angular.

Я хочу проверить, имеет ли текст по оси X 'Фев' в нем.

Если это так, я хочу изменить его стиль.

В приведенном ниже примере он меняет цвет по оси Y.

Как проверьте, что ось имеет определенное имя и стилизуйте его.

private accessTicks(){
    d3.select(".x-axis")
      .selectAll('g')
      .each(function(d) {
        d3.select("text")
        .filter(() => {
          return d3.select(this).text() === 'Feb'
        })
        .attr("fill", 'red'); 

      });
  }  

1 Ответ

3 голосов
/ 19 января 2020

Очевидная проблема здесь в том, что this внутри функции стрелки не означает элемент DOM. В качестве решения вы можете использовать третий и второй аргументы, объединенные или, проще, просто первый аргумент, который является базовой:

 .filter((d) => { 
    return d === 'Feb'
 })  

Кроме того, вы можете выбрать все тексты в один раз (нет необходимости в этих четырех методах выбора). Итак, становится:

private accessTicks() {
  d3.selectAll(".x-axis text")
    .filter(d => d === 'Feb')
    .attr("fill", 'red');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...