Angular16如何创建没有初始值的信号

far*_*dab 4 typescript angular-signals

我将 Angular 应用程序更新到 v16,并尝试使用 Signals。之前,我在没有初始值的情况下初始化变量

filters: Filter[];
Run Code Online (Sandbox Code Playgroud)

但当我使用信号时,它给了我一个错误。 An argument for 'initialValue' was not provided 有没有办法可以在不初始化信号值的情况下创建信号?

我尝试将其 Type 设置为可能为 null 并赋予它 null 值

signal<Category | null>(null);
Run Code Online (Sandbox Code Playgroud)

但文件中还发生了一些其他错误,例如 Object is possibly 'null'.

我不喜欢使用“任何”类型

那么请问您能提供另一种解决方案吗?

Mat*_*ler 7

这些信号经过专门设计,始终具有同步值。

null这意味着您必须使用或显式创建信号undefined

例如:

const mySignal = new Signal<{value:number}|null>(null). 
Run Code Online (Sandbox Code Playgroud)

目前缩小范围不适用于模板中的信号。这样做时预计会出现错误{{ mySignal().value }}

您将不得不依赖可选链接运算符 ( .?) :{{ mySignal()?.value }}来防止该错误。

Angular 团队已经意识到这个问题,我们可以期待对此进行一些改进!