[英]Angular 6 what is the difference between @HostBinding('class') and @HostBinding('attr.class')
[英]Angular: attr.class on svg doesn't work with IE
我想表明用户是否喜欢某个元素。
svg 有一个用于基本样式的类: favoritesStar
。 如果用户喜欢该元素,则应该有第二个类: favoritesStarActive
。
<div class="favoriteStarWrapper">
<svg [ngClass]="getFavoriteStarClasses(project)" viewBox="0 0 99.109 94.258" enable-background="new 0 0 99.109 94.258" xml:space="preserve">
<polygon points="49.555,0 64.868,31.028 99.109,36.003 74.333,60.155 80.181,94.258 49.555,78.156 18.928,94.258 24.777,60.155 0,36.003 34.241,31.028 " />
</svg>
</div>
通常我们使用普通的class="favoritesStar"
和[class.favoritesStarActive]="project.IsUserFavorite"
。 顺便说一下, project
是异步的。
由于 IE 的某些问题,存在一个错误。 请参阅此讨论。
有一个修复链接。 我用以下对应的上层 html 尝试了它:
private getFavoriteStarClasses(project: Project) {
let classes = "favoritesStar";
if (project.IsUserFavorite) {
classes = classes + " favoritesStarActive";
}
return classes;
}
奇怪的是,这在 Chrome 上没有问题,尽管在检查IsUserFavorite
属性时 IE 总是返回 false。
将attr.class
与返回应该使用的类的公共方法一起使用。 不确定是否使用了 classList.js 垫片,我将保留它以备将来可能出现的错误。
<svg [attr.class]="getFavoriteStarClasses(project)" viewBox="0 0 99.109 94.258" enable-background="new 0 0 99.109 94.258" xml:space="preserve">
<polygon points="49.555,0 64.868,31.028 99.109,36.003 74.333,60.155 80.181,94.258 49.555,78.156 18.928,94.258 24.777,60.155 0,36.003 34.241,31.028 " />
</svg>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.