Angular 上的信号相当不错.然而,我正在努力处理多个信号.在一个非常简单的例子中是定义两个信号controller1controller2的服务ExternalController.

现在,我想在信号值发生变化时触发一个方法.

service ExternalController {
    public controller1 = signal(null);
    public controller2 = signal(null);

    constructor() {
        effect(() => {
            if (controller1) do something
            if (controller2) do something else
        })
    }
}

问题是,每当信号发生变化时,就会有effect()个触发器.但是我怎么能发现which信号已经emits 了呢?

推荐答案

效果回调在被动上下文中运行.这意味着它能够知道它依赖于哪个信号.如果只调用生效的单个信号,则只有在更新该信号时才会调用该效果.

Effect不适用于在其外部调用的信号更新.

在您的情况下,您可能会有两个影响:

effect(() => {
   if (controller1()) {
     ...
   }
})

effect(() => {
   if (controller2()) {
     ...
   }
})

Angular相关问答推荐

to Signal on Observables inside Signal

angular 17:app.config. server.ts中的mergeApplicationconfig导致初始化在app.config. ts中导入的提供程序

使用当前选定的选项创建IF语句

未在ng bootstrap 模式中设置表单输入

带输入的单位测试Angular 分量.需要

是否可以将Angular 路由配置为在点击带有本地人力资源S的锚点时更新Angular 路由?

AG网格Angular 快捷菜单调用函数

如何使用独立组件在ANGLE(16+)中实现嵌套布线

带区域设置用法的Angular 日期管道

如何有条件地更新 Angular 路由解析器数据?

在父组件的子组件中使用 ng-template

您如何链接需要多个先前可观察对象的依赖订阅

在ionic 5中获取url传递的参数

在 Angular material表上调用 renderRows()

类型错误:无法读取未定义的属性

如何将服务变量传递到 Angular Material 对话框?

如何在angular 5的组件中格式化日期

Angular 5 测试:如何获取对子组件的引用

Angular 2:为什么在检索路由参数时使用 switchMap?

在angular-cli中创建模块时生成路由模块