角信号:最佳实践在暴露的信号

发表在
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模板就变成:

我的信号值是:{{货币()}}

很多人认为:“我们在一个模板调用一个方法;这是一个角反模式!”你在正常情况下是正确的,但信号是不同的。

- - -

- - -

Baidu
map