https://stackoverflow.com/questions/36475168/angular-2-0-d3-js-dont-apply-css-on-svg
如上訴這篇,d3去更動css angular不會重新繪畫,
解法有兩種一種是在component加入ViewEncapsulation.None另一個是CSS combinators >>>, /deep/, ::shadow
。
>>>, /deep/, ::shadow
這個似乎是在家加入的style加入,類似這樣:
>>> .append_in{}
/deep/ .append_in{}
但我目前試了兩個都沒反應...
像下列這個案例,可以成功append五個div進去,但到下一層的style就失效了。
import * as d3 from "d3";
var data = [38,69,72,42,58,87];
d3.select('.append_in').selectAll('div')
.data(data)
.enter()
.append('div')
.text(function(d){
return d;
}).style({
'color':function(d){
if(d<60){
return 'red'
}
}
});
html:
<div class="append_in">
</div>
不會動的:
https://jsbin.com/ruvimuguzu/edit?html,console,output
會動的,懶得綁定data,所以就直接操作DOM:
https://jsbin.com/yafixegesa/edit?html,console,output
原因就是像我上面說的,D3 v4以後,不知道幹嘛把style改成不接受object。