如何在 Angular 2 中设置属性 d pf 路径元素?
How to set attribute d pf path element in Angular 2?
我正在从事 Angular2 项目。
class Coordinate {
x:number;
y:number;
}
class Data {
.....
coordinates: Array<Coordinate>;
.........
}
这是一个服务文件。我正在使用此服务访问我的组件的 .ts 文件中的数据。
我想用坐标数组在svg上画多段线。在模板文件中,我试图设置路径元素的属性 'd',但无法找到正确的语法。
以下是组件的.html文件部分
<div>
<svg>
<path [[How am I supposed to set the d attribute here]]/>
</svg>
</div>
在 Angular 中,svg 需要一些特殊处理。这是一篇关于该问题的非常好的文章:http://teropa.info/blog/2016/12/12/graphics-in-angular-2.html
现在在您的模板中应该是:
<div>
<svg viewBox="0 0 480 480" preserveAspectRatio="xMidYMid meet" width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg:g>
<svg:path [attr.d]="yourVarThatStoresPathString"></svg:path>
</svg:g>
</svg>
</div>
在您的 ts 文件中,您应该添加导致路径字符串的逻辑(例如 yourVarThatStoresPathString = "M0,0 480,0 480,480 0,480 0,0")。
因此,如果您有坐标 (x,y) 数组,您可能需要一个将其转换为此类字符串的函数。同样在 SVG 中,还有其他文字(字母)用于识别坐标周围的细节,例如 M0,0 - 表示将铅笔移动到 0,0 并开始绘图,或者坐标后的 Z 可能表示 - link 最后一个坐标第一个.
举个例子:
let pathPoints = [
{
l: "M",
x: 135.00,
y: 245.00,
s: " "
},
{
l: "",
x: 135.00,
y: 110.00,
s: " "
},
{
l: "",
x: 345.00,
y: 110.00,
s: " "
},
{
l: "",
x: 345.00,
y: 245.00,
s: " "
},
{
l: "",
x: 345.00,
y: 380.00,
s: " "
},
{
l: "",
x: 135.00,
y: 380.00,
s: " "
},
{
l: "",
x: 135.00,
y: 245.00,
s: "Z"
},
]
l = 字母,s - 我为方便起见使用的间隔符。
constructPath(pathPoints) {
let pathD = "";
pathPoints.forEach((coordinate) => {
pathD = pathD + coordinate.l + coordinate.x + "," + coordinate.y + item.s;
});
return pathD;
}
}
这当然有点伪代码,但应该给你一个方向。
我正在从事 Angular2 项目。
class Coordinate {
x:number;
y:number;
}
class Data {
.....
coordinates: Array<Coordinate>;
.........
}
这是一个服务文件。我正在使用此服务访问我的组件的 .ts 文件中的数据。
我想用坐标数组在svg上画多段线。在模板文件中,我试图设置路径元素的属性 'd',但无法找到正确的语法。
以下是组件的.html文件部分
<div>
<svg>
<path [[How am I supposed to set the d attribute here]]/>
</svg>
</div>
在 Angular 中,svg 需要一些特殊处理。这是一篇关于该问题的非常好的文章:http://teropa.info/blog/2016/12/12/graphics-in-angular-2.html
现在在您的模板中应该是:
<div>
<svg viewBox="0 0 480 480" preserveAspectRatio="xMidYMid meet" width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg:g>
<svg:path [attr.d]="yourVarThatStoresPathString"></svg:path>
</svg:g>
</svg>
</div>
在您的 ts 文件中,您应该添加导致路径字符串的逻辑(例如 yourVarThatStoresPathString = "M0,0 480,0 480,480 0,480 0,0")。
因此,如果您有坐标 (x,y) 数组,您可能需要一个将其转换为此类字符串的函数。同样在 SVG 中,还有其他文字(字母)用于识别坐标周围的细节,例如 M0,0 - 表示将铅笔移动到 0,0 并开始绘图,或者坐标后的 Z 可能表示 - link 最后一个坐标第一个.
举个例子:
let pathPoints = [
{
l: "M",
x: 135.00,
y: 245.00,
s: " "
},
{
l: "",
x: 135.00,
y: 110.00,
s: " "
},
{
l: "",
x: 345.00,
y: 110.00,
s: " "
},
{
l: "",
x: 345.00,
y: 245.00,
s: " "
},
{
l: "",
x: 345.00,
y: 380.00,
s: " "
},
{
l: "",
x: 135.00,
y: 380.00,
s: " "
},
{
l: "",
x: 135.00,
y: 245.00,
s: "Z"
},
]
l = 字母,s - 我为方便起见使用的间隔符。
constructPath(pathPoints) {
let pathD = "";
pathPoints.forEach((coordinate) => {
pathD = pathD + coordinate.l + coordinate.x + "," + coordinate.y + item.s;
});
return pathD;
}
}
这当然有点伪代码,但应该给你一个方向。