Имея компонент в angular2 где app.component.css
определяет класс h-bar
:angular2: применять класс d3 элемент из стиля компонента
В app.component.ts
, d3 используется для создания элементов, относится класс h-bar
от app.component.css
.
d3.select("#container").selectAll("div.h-bar") // <- C
.data(data) // <- D
.enter() // <- E
.append("div") // <- F
.attr("class", "h-bar")
.append("span"); // <- G
Однако стиль НЕ обрабатывался должным образом. Заглядывая в созданный html, я обнаружил, что случайный _ngcontent-baf-1 (не уверен, что это module.id
) отсутствует в тех элементах, которые генерируются d3
.
Так что я хотел бы добавить этот атрибут module.id
к этому элементу:
// Enter
d3.select("#container").selectAll("div.h-bar") // <- C
.data(data) // <- D
.enter() // <- E
.append("div") // <- F
.attr(module.id, "")
.attr("class", "h-bar")
.append("span"); // <- G
К сожалению, ошибка была брошена в module.id
недействительно имя атрибута:
Любая идея, пожалуйста?
Css работает, однако 'инкапсуляция: ViewEncapsulation.None' выведет' module.id'. – beewest
из чего? Я не вижу связи между 'moduleId' и' encapsulation' edit: теперь я вижу. '_ngcontent-baf-1' не' module.id'. 'module.id' - это в основном путь к компоненту. '_ngcontent-baf-1' используется для обеспечения инкапсуляции/эмулирования тени. – j2L4e
Извините, я имею в виду '_ngcontent-baf-1'. любой способ генерировать элемент с использованием углового 'ngFor', затем привязать модель данных d3 для каждого элемента. Я все еще хочу сохранить красоту инкапсуляции? – beewest