0

みんな!

あなたの助けが必要です。Angular 10 アプリケーションにコンポーネントがあり、A と名付けましょう。

このコンポーネントには<router-outlet>、routes.ts ファイルに記述されたルートもあります。

私が必要とするのは、A コンポーネント内の変数 (フィールド) を、B コンポーネントのボタンをクリックして変更することです<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}

A に属する (そしてそのフィールドを変更する) この func() を B 内で呼び出したいのですが、Input() を介してそれを実行することはできません。ルーターでは実行できません。

4

1 に答える 1

1

デモサービスを使用してコンポーネント間で通信できます

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  ){}
于 2020-07-22T17:36:24.083 に答える