У меня здесь stackbiltz - https://stackblitz.com/edit/lable-line-break-vaszab?file=src/app/app.component.ts
У меня есть гистограмма d3 и приложение Angular.
Метки оси x разделены на две строки с помощью функции, которая вызывается кактики оси z созданы
private insertLinebreak(d) {
let labels = d3.select(this);
let words = d;
console.log("Label:", labels.html());
labels.text('');
let index = words.indexOf(' ', words.indexOf(' ') + 1)
let title = words.substr(0, index)
let subtitle = words.substr(index + 1)
let tspantitle = labels.append('tspan').text(title)
let tspansubtitle = labels.append('tspan').text(subtitle)
tspantitle
.attr('x', 0)
.attr('dy', '15')
.attr('class', 'x-axis-title');
tspansubtitle
.attr('x', 0)
.attr('dy', '16')
.attr('class', 'x-axis-subtitle');
};
Функция использует 'this' для выбора 'g', вызывающего функцию (но я думаю, что в d3 она выбирает весь svg)
Этот кодработает в stackblitz, но в моем фактическом коде я получаю сообщение об ошибке
Argument of type 'this' is not assignable to parameter of type 'BaseType'.
Я знаю, что это не очень полезно
Я думаю, что это имеет отношение к Typescript и способу его обработки 'this'
Кто-нибудь знает, почему это происходит и как я могу это исправить.