将信息从一个角度组件传递到另一个

时间:2019-10-28 17:09:47

标签: angular

(如果这是重复的,请告诉我。我找到了类似的线程,但无法找到答案的解决方案。)

我有一个调用其子级(模态#1)的组件,而后者又可以调用另一个模态(模态#2)。模式1只是一种标准形式。如果其中一个字段缺少用户想要的选项,则可以触发模式2添加它。

我想知道的是,如何将数据从模式#2传递到#1,以便我可以通知#1已添加了新元素,并且应该在相应的表单字段中将其用作默认值? / p>

2 个答案:

答案 0 :(得分:1)

在模态之间交换信息的最佳方法是使用服务。 我可以向您显示的最佳解决方案是:https://angularfirebase.com/lessons/sharing-data-between-angular-components-four-methods/

使用最后一种方法:)

答案 1 :(得分:1)

大多数情况下,您应该使用@Input@Output

有时(例如由于<router-outlet></router-outlet>)是不可能的,您可以向这两个组件注入服务,并通过rxjs中的 Subject / BehaviourSubject 进行通信。

服务中的代码

public subject$: Subject<any> = new Subject<any>();

组件1中的代码

private subs = [];

constructor(private _serviceName: SomeService){}

ngOnInit(): void {
    this.subs.push(this._serviceName.subject$.subscribe(data => {console.log(data);}));
}

ngOnDestroy(): void {
    this.subs.forEach(s => s.unsubscribe());
}

组件2中的代码

constructor(private _serviceName: SomeService){
    this._serviceName.subject$.next(anyData); // send data
}

别忘了从主题退订OnDestroy!

  

这是一种自己完成的自定义方式。大多数情况下,库都是以与模式生成的动态生成组件进行通信的方式构建的。