我正在使用Angular 2和D3.js,想要展示一个红色的矩形。
只有当我把样式放在style.css文件中时才有效。请参考这个 plunkr
当我把样式放在组件的styles: []
中时,它不起作用。请参考这个 plunkr
如何让我在使用组件 styles: []
时能够生效?谢谢
更新: @micronyks 提供了一种解决方案,但它使组件中的样式全局化,基本上和写在style.css文件中没有区别。在这个 plunkr中,它显示一个组件中的样式将覆盖另一个组件的样式,因此无法显示绿色和红色的矩形。
更新2: @Günter的方法完美地解决了这个问题!只是提醒一下,对于Günter的方法: 它需要至少Angular beta 10。(我的其他plunkr使用Angular beta 8)使用Angular beta 12,绿色和一个红色矩形的工作演示在这里。
import {Component} from 'angular2/core'
@Component({
selector: 'my-app',
providers: [],
styles: [`
/*this does not work*/
.bar {
fill: red;
}
`],
template: `
<div>
<svg class="chart"></svg>
</div>
`,
directives: []
})
export class App {
constructor() {}
ngOnInit() {
this.draw();
}
draw() {
let data = [{name: 'A', value: 1}];
let width = 400, height = 200;
let x = d3.scale.ordinal().rangeRoundBands([0, width]);
let y = d3.scale.linear().range([height, 0]);
let chart = d3.select(".chart")
.attr("width", width)
.attr("height", height)
.append("g");
x.domain(data.map(function(d) { return d.name; }));
y.domain([0, d3.max(data, function(d) { return d.value; })]);
chart.selectAll(".bar")
.data(data)
.enter().append("rect")
.attr("class", "bar")
.attr("x", function(d) { return x(d.name); })
.attr("y", function(d) { return y(d.value); })
.attr("height", function(d) { return height - y(d.value); })
.attr("width", x.rangeBand());
}
}
style.css
文件中时,它是有效的。 - Hongbo Miaostyle.css
文件中时,它可以工作。 - Hongbo Miao