如何将数据从一个组件传递到另一组件

时间:2020-10-15 04:52:06

标签: angular typescript rxjs

我有一个名为MainWizard的组件,该组件正在使用许多子组件,每个子组件都有一个输入表单,用于接收各个字段的输入。

要将数据从一个子组件传递到另一个子组件,我正在使用名为WizardService的服务。 对于每个共享变量,我在如下服务中都有一个主题

    private warningSubject= new Subject<any>();
    
    setWarning(data){
        return this.warningSubject.next(data);
    }

    getWarning(){
      return this.warningSubject.asObservable();
    }
    

但是对于我需要与其他子组件共享的每个变量,有20多个主题。

问题:

  1. 可以使用服务中的这么多主题在组件之间共享数据吗?
  2. 是否有更好的方法来实现这一目标?
  3. 如果这样很好,是否可以通过其他策略进一步优化?

3 个答案:

答案 0 :(得分:0)

您可以尝试双重绑定并将数据传递给子组件,就像link

一样,而不是服务

答案 1 :(得分:0)

如果输入/输出/服务的数量变得笨拙,则可以将多个相关的输入/输出包装到一个类或对象中。或者,您可以使子组件执行更多的工作,而使父组件执行更少的工作(即,使子组件“更聪明”,使父组件“笨拙”)。您也可以考虑使用诸如NGXSNgRxAkita之类的状态管理库,尽管这对于满足您的需求可能是过大的。

答案 2 :(得分:0)

使用所有相关数据字段创建通用服务,这是解决此问题的简便方法