我有一个Angular effect,我只想执行一次.

但由于它依赖于其他信号,我希望它先等待,直到所有数据都出现. 在第一次处决之后,我不希望它再次被触发.

我正在寻找一个优雅的解决方案(而不仅仅是一些布尔翻转)

使用Observables,你可以有效地使用takeUntiltake(1).但是,什么信号相当于这个呢?

推荐答案

100

效果返回一个可用于手动销毁它们的AddressRef, 使用. destroy()操作.这也可以与 手动选项创建一个效果,直到它被 手动销毁.

const effectRef =  effect(()=>{
    if(this.a() && this.b()){
      console.log('ReadValue');
      effectRef.destroy(); 
    }
},{manualCleanup:true});

100

Angular相关问答推荐

身份验证卫士给了我17个Angular 的任何类型

如果过滤器在rxjs流中触发,则返回空数组

截取提取后端S获取添加授权头的请求

如何使用带有17角的Swiper 11.0.5元素

如何以Angular 解析表单控件名称的无值访问器?

Angular 信号 - 使用 mutate() 与使用 forEach() react 性

相同的 Angular 代码在生产环境中停止工作

无法将项目从 Angular 13 更新到 14

如何在Cypress 测试中切换 Angular 选项卡

全局异常处理

*ngIf 和 *ngFor 在 元素上使用

找不到模块'webpack'

Error: Module not found: Error: Can't resolve '@angular/cdk/scrolling'

Angular 没有可用于依赖类型的模块工厂:ContextElementDependency

如何从Angular 2 中的按钮单击触发输入文件的单击事件?

Angular2 Base64 清理不安全的 URL 值

Angular 2 - 全局 CSS 文件

默认情况下如何在Angular中 Select mat-button-toggle

找不到模块angular2/core

Firebase 查询子项的子项是否包含值