我正在玩Angular2,使用打字稿,有些东西没有像我希望的那样呈现,我不知道我做错了什么。
此代码正常运行
import {Component} from 'angular2/core';
@Component({
selector: 'my-app',
template: `
<svg viewBox="0 0 900 500" preserveAspectRatio="xMidYMid meet">
<svg:circle cx=50 cy=50 r=10 />
<svg:circle cx=71 cy=71 r=20 />
<svg:circle cx=106 cy=106 r=30 />
</svg>
`
})
export class AppComponent {
}
但是当我试图用* ngFor将它绑定在一个对象上时,它不会渲染......
@Component({
selector: 'my-app',
template: `
<svg viewBox="0 0 900 500" preserveAspectRatio="xMidYMid meet">
<svg:circle *ngFor="#circle of circles"
[attr.cx]="circle.x"
[attr.cy]="circle.y"
[attr.r]="circle.radius" />
</svg>
`
})
export class AppComponent {
circles = [
{x: 50, y: 50, radius: 10},
{x: 75, y: 75, radius: 20},
{x: 115, y: 115, radius: 30}
];
}
我正在尝试使用typescript代替本教程(http://teropa.info/blog/2016/02/28/metabubbles-generative-art-with-angular-2.html#drawing-svg-circles)......
似乎是AngularJS 2 and SVG <ellipse> elements not rendered
的副本未为每次迭代生成Dom元素,并且未生成属性(属性)......
现在已经固定了 它适用于Chrome,但不适用于IE 11。 IE控制台没有显示javascript错误和chrome控制台。我是如何设法解决我的问题,试图解决我的错误。
我原来改变了SystemJS配置。而不是使用https://angular.io/docs/ts/latest/quickstart.html#!#tsconfig
中所述的以下配置System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
}
});
我用过它:
System.config({
transpiler: 'typescript',
typescriptOptions: {
emitDecoratorMetadata: true
},
map: {
app: "./app"
},
packages: {
app: {
main: './main',
defaultExtension: 'js'
}
}
});
这是我不太了解的一部分,那些类型的字符是否覆盖了tsconfig.json文件?我还不知道......我还不知道这个映射是什么以及包裹是什么,但至少我可以继续我的学习
答案 0 :(得分:1)
我是angular2的新手,但这对我有用,也许你必须添加:
directives:[NgFor]
import { NgFor } from 'angular2/common';
对不起,我的英语希望它会对你有帮助。
import { Component } from 'angular2/core';
import { NgFor } from 'angular2/common
..//
@Component({
selector: 'test',
directives:[NgFor],
template: `
<svg viewBox="0 0 900 500" preserveAspectRatio="xMidYMid meet">
<svg:circle *ngFor="#circle of circles"
[attr.cx]="circle.x"
[attr.cy]="circle.y"
[attr.r]="circle.radius" />
</svg>`
})
<强>更新强>
我也试过没有
directives:[NgFor]
import { NgFor } from 'angular2/common';
它有效。
package.json info
..//
"license": "ISC",
"dependencies": {
"angular2": "2.0.0-beta.7",
"systemjs": "0.19.22",
"es6-promise": "^3.0.2",
"es6-shim": "^0.33.3",
"reflect-metadata": "0.1.2",
"rxjs": "5.0.0-beta.2",
"zone.js": "0.5.15"
},
..//
答案 1 :(得分:0)
你可以试试这个。
定义您的圈子组件
@Component({
selector: 'g[circle]',
templateUrl: './circle.component.html',
styleUrls: ['./circle.component.scss']
})
circle.component.hmtl:
<svg:circle
[attr.cx]="circle?.x"
[attr.cy]="circle?.y"
[attr.r]="radius"
[attr.fill]="circle?.fill"
/>
你的root html就像
<svg>
<g circle *ngFor="let circle of circles"
[attr.fill-opacity]="opacity"
[attr.transform]="scale"
[circle]="circle"
/>
</svg>
类似地,您可以通过使用选择器创建类似的组件来使用所有其他svg形状。
您可以使用此库提供所有svg元素