正在检查元素是否在Angular2中动态标记了attr/class
在正在检查元素是否在Angular2中动态标记了attr/class,angular,angular2-directives,Angular,Angular2 Directives,在Angular2中,开发人员是否有办法检查一个组件的对应元素是否标记了某个属性/类 假设我们有以下html: <outer-controller> <label label-directive class='dynamically-set-class' dynamically-set-attribute>just some label</label> </outer-controller> 只是一些标签 标签元素中标记的标签指令是一
Angular2
中,开发人员是否有办法检查一个组件的对应元素是否标记了某个属性/类
假设我们有以下html:
<outer-controller>
<label label-directive class='dynamically-set-class' dynamically-set-attribute>just some label</label>
</outer-controller>
只是一些标签
标签元素中标记的标签指令
是一个Angular2
组件,两个动态设置类
和动态设置属性
由外部控制器根据用户输入动态控制
每当外部控制器
重置标签或属性的类时,它会触发一个由标签指令
捕获的事件,因此标签指令
应该根据运行时属性/类设置动态执行一些操作
但是,我在现有的官方Angular2
doc@Input()
文件中找不到任何示例。您可以执行以下操作:
@指令({
选择器:“[标签指令]”
})
导出类LabelDirective{
@输入('class.dynamicset class')\u dynamicallySetClass:boolean;
@输入('dynamicy-set-attribute')\u dynamicallySetAttribute:any;
恩戈尼尼特(){
log('class'+\u dynamicallySetClass);
log('attribute'+\u dynamicallySetAttribute);
}
ngOnChanges(更改){
..
}
}
还有一个问题,如果在运行时外部控制器更改了属性/类,@Input()
方法是否会反映出来?假设out控制器删除了类。动态设置类
,则\u dynamicallySetClass
将变为假
?是的,值将自动更新,并将执行从模板到字段的绑定,值更改时将调用ngOnChanges()
。使用类。某些类
只能检查是否设置了特定类(布尔值
),但对于任意类,可以直接引用类属性(与属性类似)@Input('class')classes:String
并检查包含哪些类。(不确定它是一个字符串,可能是一个数组)只要用代码尝试一下,onChanges
方法就可以工作,但是两个@Input()
都没有反映实际值,在构造函数中和onChanges
方法中,它们都是未定义的,虽然我可以在onChanges
方法中获得更改,但我只能监视onChanges
方法中的更改吗?如果您想获得更改通知并在值更改时执行某些操作,可以使用onChanges
。如果要在创建组件后读取值,请使用ngOnInit(){…}
。对\u dynamicallySetClass
/\u dynamicallySetAttribute
使用getter/setter也可以在值更改时执行代码,但我对TS的了解不够,无法提供代码(我自己只使用Dart)。