角信号:最佳实践在暴露的信号
发表在
3分钟阅读5月15日
一些最佳实践正在成为中可用的信号开发者预览版与角16。
提醒一下,这是我们如何创建一个与角信号:
货币=信号(美元);
这将创建一个WritableSignal,这意味着任何代码,参考信号可以更新它的价值:
currency.set (CAD);
而能够更新一个信号从任何地方可以方便,它还可以导致组件占据太多的应用程序的业务逻辑。角,我们想将这部分委托给服务,这就是为什么当使用RxJs科目,我们进入暴露他们的习惯为只读可见:
私人currencySubject = new BehaviorSubject(美元);
getCurrency $():可观察到的<字符串> {
返回this.currencySubject.asObservable ();
}
信号我们可以应用同样的想法,因为角团队方便包括只读方法返回一个信号:
私人currencySignal =信号(美元);
<字符串> {getCurrencySignal():信号
返回this.currencySignal.asReadonly ();
}
在上面的代码是有效的,它有一个缺点。阅读的价值信号,我们必须调用它作为一个函数。这意味着上述公共信号可以被称为这样一个组件模板:
我的信号值是:{{getCurrencySignal () ()}}
双重括号不理想。
相反,我们可以使用getter语法让信号作为一个公共类属性:
私人currencySignal =信号(美元);
得到货币():信号<字符串> {
返回this.currencySignal.asReadonly ();
}
和我们的HTML模板就变成:
我的信号值是:{{货币()}}
很多人认为:“我们在一个模板调用一个方法;这是一个角反模式!”你在正常情况下是正确的,但信号是不同的。