我第一次实现带有信号的自定义表单控件。
我想要一个可用于禁用该组件的输入。但是,由于它还支持 setDisabledState 方法,因此我需要能够在某处设置disabledState。
这是我目前的做法。
private disabled = input<boolean>(false);
private disabledCall = signal<boolean>(false)
public disable = computed(() => this.disabled() || this.disabledCall())
setDisabledState(isDisabled: boolean): void {
this.disabledCall.set(isDisabled)
}
与非基于信号的方法相比,这感觉很糟糕。
@Input()
public disabled = false;
setDisabledState(isDisabled: boolean): void {
this.disabled = isDisabled
}
我可以做些什么来改进基于信号的版本吗?
17.2 引入了模型输入,您可以利用它们是可写输入信号的事实。
private disabled = model<boolean>(false);
setDisabledState(isDisabled: boolean): void {
this.disabled.set(isDisabled)
}