2017-06-07 7 views
0

BootstrapコンポーネントをAngularに追加する@ ng-bootstrap/ng-bootstrapを使用しています。開いたモーダルにコンポーネントを注入することができます。注入されたコンポーネントは、開いたモーダルのボディ/コンテンツを構成します。Bootstrap Modalのコンポーネントにデータを注入する4

私はPlayerのリストを持っています。プレーヤーをクリックすると、クリックされたプレーヤーのデータが入ったモーダルを開きたいと思います。私はこのように注入されたPlayerComponentでモーダルを開くことができます。

constructor(
    private modalService: NgbModal 
) { } 

openPlayerModal() { 
    const modalRef = this.modalService.open(PlayerComponent) 
} 

質問は... はどのように私はそれがプレイヤーのデータをフェッチするために何を知っているようにコンポーネントに追加のデータを挿入しますか?など。私は、呼び出しで提供されたIDに基づいてAPIからデータをフェッチするPlayerComponent上にOnInitインターフェースを持つかもしれません。

+0

:https://github.com/ng-bootstrap/ng-bootstrap/blob/master/src/modal/modal.ts#L52がISN追加データのパラメータ。唯一の方法は、それが見える共有サービスを使用することです。 – echonax

+0

'open()'メソッドに渡す前にコンポーネントをインスタンス化することはできませんか? –

+0

'createComponent'とリゾルバを使って動的にコンポーネントを作成することができますが、あなたが使用しているライブラリでどのように動作するのかをidkで知ることができます。 – echonax

答えて

3

@ng-angular/ng-angularのように、コンポーネントインスタンスがインスタンス化された後に触れることができます。したがって、値を変更することができます。

だから、解決策は次のようになります。その後、

constructor(
    private modalService: NgbModal 
) { } 

openPlayerModal() { 
    const modalRef = this.modalService.open(PlayerComponent) 
    modalRef.componentInstance.player_id = 1; 
} 

とコンポーネントがplayer_id@Input()デコレータを使用します。私はあなたがそのサービスでそれを行うことができるとは思わない

export class PlayerComponent { 
    @Input() player_id; 
    ... 
} 
+0

は、ルートパラメータ – mayur

関連する問題