在给定的属性指令示例(即添加外观/行为的指令)中,我们在主机元素上设置了一个相当简单的样式.例如
import {Directive, ElementRef } from 'angular2/core';
@Directive({
selector: '[myHighlight]'
})
export class HighlightDirective {
constructor(element) {
element.nativeElement.style.backgroundColor = 'yellow';
}
static get parameters(){
return [[ElementRef]];
}
Run Code Online (Sandbox Code Playgroud)
而不是设置样式,我可以使用样式吗?例如
@Directive({
selector: '[myHighlight]',
styles: [':host { background-color: yellow; }']
})
Run Code Online (Sandbox Code Playgroud)
这似乎对我不起作用?
我正在做一些稍微复杂的事情,这导致了相当数量的蒙特哥特代码,设置了很多样式,使用了AnimationBuilder等等.对我来说感觉就像把它分成CSS中的类和动画要好得多.
ViewEncapsulation =模拟/默认是否重要?
我不确定是否可行。
<span class="nav-label second-level-text" style="margin-left: 10px;">
{{partner.name}}
<span class="badge"
*ngIf="unreadConversations.length > 0 | unreadConversationForPartner : [unreadConversations,partner.id]">
{{unreadConversations.length | unreadConversationForPartner : [unreadConversations,partner.id]}}
</span>
</span>
Run Code Online (Sandbox Code Playgroud)
我在这边。我正在将过滤器应用于,*ngIf并且还显示了返回的过滤器的值(即计数)
如果从管道返回的计数大于0,则我想显示一种样式,否则不显示样式。但是,我能够通过以下方式实现此目的,*ngIf and Filter但是如果Filter更改了的值,则*ngIf不会更改。
例如。我在阵列中有2个项目。
项目1:长度为1,它显示跨度并执行其工作...
第2项:开始时长度为0,并且不显示(这是正确的行为),但是过滤器值发生了变化,但是之后*ngIf不再调用。
unreadConversationForPartner pipe
transform(value: any, ...args: any[]): any {
var count = 0;
var partnerId = args[0][1];
var conversations = args[0][0];
conversations.forEach(element => {
if(element.partnerId == partnerId) count++
});
return count;
}
Run Code Online (Sandbox Code Playgroud)
让我知道所提供的信息是否不够或不清楚。