【问题标题】:rxjs subscribe in ngOnInitrxjs 在 ngOnInit 中订阅
【发布时间】:2022-07-31 18:19:04
【问题描述】:

在模板中的 ngIf 上触发按钮显示。在此代码之后,按钮不显示。

 public navBackVisible = false
        ngOnInit() {
                this.router.events
                  .pipe(filter(event => event instanceof NavigationEnd))
                  .pipe(pairwise())
                  .subscribe(
                  () => this.navBackVisible = true); // here true
        
              console.log(this.navBackVisible); // here false
    }

模板:

 <button *ngIf = "navBackVisible"><icon>arrow_back</icon></button>

【问题讨论】:

  • 其他东西改变了它 - 无法通过这个来判断。请分享其余的相关代码。
  • navBackVisible 在异步订阅中设置为 true,因此控制台日志在子返回值之前触发。订阅解决后,它会设置为 true,但控制台日志行已被读取,不会再次被读取。

标签: javascript angular rxjs


【解决方案1】:

成对 (https://rxjs.dev/api/operators/pairwise),仅当且仅当至少发出一个值之后才发出值,并且此处的路由器事件仅发出 1 个值然后完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 2018-07-29
    • 1970-01-01
    相关资源
    最近更新 更多