3

私の Angular アプリには、ダイアログ オーバーレイを開く機能を備えたコンポーネントがあります。元のコンポーネントからこのダイアログ コンポーネント (EnrollingProcessComponent) にデータを渡す方法を見つけようとしています。これは親子関係ではないので、ここで Input() や [] バインディングを使用することはできません。

また、ここでは説明しませんが、複数のインスタンスが問題を引き起こす可能性があるため、コンポーネント間でデータを取得および共有するためにサービスを使用していません。そのため、サービスを挿入して、ダイアログ コンポーネント (EnrollingProcessComponent) で同じインスタンスを取得することもできません。

とはいえ、元のコンポーネントからダイアログ コンポーネントにこのデータ (単なる電子メール アドレス) を何らかの方法で渡す必要があります。パラメータとして渡すことでこれを行うことができるはずだと思いますが、これまでのところ機能させることができません(つまり、元のコンポーネントの値をコンソールに出力すると、値が取得されます。しかし、ダイアログ(EnrollingProcessComponent)コンポーネントでその値を慰めると、「未定義」になります)。

click() イベントを使用して、ダイアログ コンポーネントを開きます。

<button *ngIf="canBeEnrolled()" md-menu-item 
(click)="onContactClicked()">
  <span class="md-menu-text">Initiate Contact</span>
</button>

トリガーされる関数は次のようになります。

public onContactClicked(primaryContactEmail): void {
    primaryContactEmail = this.getPrimaryContactEmail();
    console.log(this.getPrimaryContactEmail());
    console.log('onContactClicked engaged on: ' + new Date());
    // Create dialog
    let dialogRef: MdDialogRef<EnrollingProcessComponent>
        = this.dialog.open(EnrollingProcessComponent, {disableClose: true});
}

メールアドレスである getPrimaryContactEmail() の結果を元のコンポーネントからダイアログが開いたときに起動されるコンポーネントに渡すにはどうすればよいですか?

4

1 に答える 1