【问题标题】:'subscribe' is deprecated. Use an observer instead of a complete callback“订阅”已弃用。使用观察者而不是完整的回调
【发布时间】:2021-04-20 11:18:48
【问题描述】:

您好,SonarQube 出现以下错误 “订阅”已弃用。使用观察者而不是完整的回调。 我在 Angular 9 中正式使用。 感谢您的帮助和时间

              onInit: (field: UiFormFieldConfig) => {
                const CostsControl = FormUtil.getControl(field.form, ContactDetailsFieldKey.Costs);
                CostsControl?.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((Cost: string) => {
                  if (Cost) {
                    const costsToSet = !Codes ? null : Cost;
                    field?.formControl?.setValue(costsToSet);
                  }
                });
              },
            },

请找到更新的代码,但 sonarQube 正在弹出此消息 “订阅”已弃用。使用观察者而不是完整的回调

  hooks: {
              onInit: (field: UiFormFieldConfig) => {
                const CostsControl = FormUtil.getControl(field.form, ContactDetailsFieldKey.Costs);
                CostsControl ?.valueChanges.pipe(takeUntil(this.destroy$)).subscribe({
                  next: (Cost: string) => {
                    if (Cost) {
                      const costsToSet = !Codes ? null : Cost;
                      field?.formControl?.setValue(costsToSet);
                    }
                  },
                });
              },
            },

【问题讨论】:

  • 也许你需要添加 "next": func with depricaded 方法? .subscribe({ next: this.handleUpdateResponse.bind(this), error: this.handleError.bind(this) });
  • @PhilippMeissner 对我来说听起来并不令人困惑。任何指南将不胜感激:)
  • @snoopy 听起来很混乱,还是提供的示例根本不起作用?如果是这样,您到底尝试了什么? (将代码 + 错误添加到您的问题中)。

标签: javascript angular angular-formly


【解决方案1】:

根据@Philipp Meissner 提到的答案,您应该简单地做:

CostsControl?.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(
    next: (Cost: string) => {
        if (Cost) {
            const costsToSet = !Codes ? null : Cost;
            field?.formControl?.setValue(costsToSet);
        }
    },
    error: () => { // log error }
});

【讨论】:

  • 我做了同样的事情,但 sonarQube 仍然抱怨“订阅”已被弃用。使用观察者而不是完整的回调。是否有另一种方法来解决这个问题
  • 编辑您的初始问题并添加您尝试过的代码。如果你做的一切都正确,错误就会消失。
  • 再次寻求您的帮助。请使用我的初始代码下方显示的新代码找到我更新的问题。感谢您的时间和回复
猜你喜欢
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-07
  • 1970-01-01
  • 2021-06-10
  • 2017-06-21
  • 1970-01-01
相关资源
最近更新 更多