Angular: 从路由更改父组件的字段

Angular: Change field of parent component from route

各位!

我需要你的帮助。我的 Angular 10 应用程序中有一个组件,我们将其命名为 A.

在这个组件中,我有 <router-outlet> 以及 routes.ts 文件中描述的路由。

我需要的是通过单击某个 B 组件中的按钮来更改 A 组件中的变量(字段),即 <router-outlet> 中的路由。我该怎么做?

例如,我们可以讨论这样的变体。

A.component.html

<B [changeFieldOfA]="func"></B>

A.component.ts

export class A {
    foo: string = "";
    func() {
        this.foo = "bar";
    }
}

这一切都很酷,因为我可以传递函数,将我的 A 组件字段更改为我的组件。

但是如果我有这个变体怎么办?:

A.component.html

<router-outlet></router-outlet>

routes.ts

{path: "b", component: B}

我想在 B 中调用这个属于 A(并更改其字段)的 func(),但我不能再通过 Input() 来完成它,因为在路由器中我不能这样做。

Demo组件之间可以使用服务进行通信

import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
@Injectable()
export class ShareService  {   
  constructor() { } 
  private paramSource = new BehaviorSubject("");
  sharedData = this.paramSource.asObservable();
  setParam(param:string) { this.paramSource.next(param)}    
}

投入使用

this.shareService.setParam('Sending param');

从服务中获取

 this.shareService.sharedData.subscribe(data=> { this.your_variable=data })

构造器喜欢

constructor(private shareService: ShareService  ){}