Angular2 xlink:href url()问题

时间:2017-02-12 10:01:26

标签: angular d3.js

我有d3.js图表​​,它在部门结尾处有圆形文字

首先绘制弧线

//Draw the arcs themselves
svg.selectAll(".monthArc")
	.data(pie(monthData))
        .enter().append("path")
	.attr("class", "monthArc")
	.attr("id", function(d,i) { return "monthArc_"+i; }) //Give each slice a unique ID
	.attr("d", arc);

然后将文本绑定到它

//Append the month names within the arcs
svg.selectAll(".monthText")
	.data(monthData)
        .enter()
        .append("text")
	.attr("class", "monthText")
	.attr("x", 5)   //Move the text from the start angle of the arc
	.attr("dy", 18) //Move the text down  
        .append("textPath")
	.attr("xlink:href",function(d,i){return "#monthArc_"+i;})
	.text(function(d){return d.month;});	

结果是那样的

enter image description here

它在正常情况下效果很好,但拒绝在angular2环境中工作。

我没有任何错误&警告信息,内部控制台,文本只是没有显示

我试过了 .attr("attr.xlink:href",function(d,i){return "#monthArc_"+i;})


.attr("attr.xlink:href",function(d,i){return "/#monthArc_"+i;})


.attr("xlink:href",function(d,i){return "/#monthArc_"+i;})

但没有成功

我发现此链接 - https://github.com/angular/angular/issues/9510,这是一个安全隐患吗?

问题:

有没有人遇到类似的行为,有没有人知道如何让它起作用?

1 个答案:

答案 0 :(得分:0)

所以,我走向错误的方向:

问题根本就是错误的网址

<强>溶液

如果您在地址处呈现图表

.attr("xlink:href",function(d,i){return "test#monthArc_"+i;})

那么你的网址应该是这样的

class myQueue { private: int size, head, tail, *data; public: myQueue(int size = 1) : size(size) { data = new int[size]; head = -1; tail = -1; } ~myQueue() // { delete[] data; } void myEnqueue(int el) { data[tail] = el; tail = (tail + 1) % size; } int maxEl() { int *temp = &data[head]; int max = *temp; while (*temp != data[tail]) { temp++; max = (max > *temp) ? max : *temp; } return max; } int minEl() { int *temp = &data[head]; int min = *temp; while (*temp != data[tail]) { temp++; min = (min < *temp) ? min : *temp; } return min; } }; int main() { myQueue q(5); int n = 0, el; while (n < 5) { cin >> el; q.myEnqueue(el); n++; } cout << "The arithmetic mean of the elements = " << q.srArifm(5) << "\n"; cout << "Maximum queue element = " << q.maxEl() << "\n"; cout << "Minimum queue element =" << q.minEl() << "\n"; system("pause"); return 0; }