1、@HostBinding 之 重复绑定同一属性
- bug描述:
一个<button>
,当isLoading
为真,设为不可用:增加is-loading
的样式以及增加disabled
属性; 当disabled
为真,增加is-disabled
的样式以及增加disabled
属性:
这种情况会出现一个bug:@HostBinding('class.is-loading') @HostBinding('disabled') isLoading: boolean = false; @Input() @HostBinding('class.is-disabled') @HostBinding('disabled') disabled: boolean = false;
isloading
为true
的时候,<button>
是没有disabled
属性的,仍然可以点击且会触发点击事件,这显然不是我们想要的 - 修复方法:
@HostBinding('class.is-loading')
isLoading: boolean = false;
@HostBinding('class.is-disabled')
disabled: boolean = false;
@HostBinding('disabled')
get _disabled(){
return this.disabled || this.isLoading;
}
- 总结:
@HostBinding
绑定同一个属性时最后一个才会生效,真则绑定假则不绑。