2017-02-16 7 views
0

clickイベントが 'a'タグでtrigerredされたときに取得された変数要素を、下のコンポーネント 'clr-modal'に渡します。私はそれを編集することができないので、 'clr-modal'コンポーネントの入力としてそれを取ることはできません。私はいくつかのハックをする必要がありますので、私はそれをHTMLやそれ以外の方法でハックして、ネストされたコンポーネントへの入力として渡します。Angular 2で@Inputデコレータを使わずにコンポーネント間で変数を渡す

マイコード:

`<div class="card-block"> 
      <ul *ngFor="let element of inprogArr; trackBy: elementFn" class="list"> 
       <li> 
        <a (click)="opened=true; setval(element);">{{element.entry}}</a> 
        <clr-modal [(clrModalOpen)]="opened"> 
        <h3 class="modal-title">{{element.entry}}</h3> 
        <div class="modal-body"> 
        <p>Description :&emsp;{{element.entryDesc}}</p> 
        <br> 
        </div> 
        <div class="modal-footer"> 
        <button (click)="moveInOn(element); opened=false;" type="submit" class="btn btn-sm" >Move to Ongoing</button> 
        <button (click)="moveInCo(element); opened=false;" type="submit" class="btn btn-sm">Move to Completed</button> 
        </div> 
        </clr-modal> 

       </li> 
      </ul> 

     </div>` 
+0

「あなたがそれに「渡す」ものをどう扱うのだろうか? – rob

+0

'clr-modal'テンプレートが' element'にアクセスできるようにしたいのであれば、 '* ngFor'のテンプレートを既に使用できるはずです –

答えて

0

モード成分に要素を渡す必要はありません。 clr-modalng-contentを使用しているため、現在のコンポーネントに存在する要素を参照するだけで済みます。あなたは一度だけ、モーダルを定義するために、あなたのビューを更新してから、そのように現在開いているモーダルのデータを保持するために、単一のプロパティを使用する必要があります:あなたはCLR-モーダル `編集できない場合

<div class="card-block"> 
    <ul *ngFor="let element of inprogArr; trackBy: elementFn" class="list"> 
     <li> 
      <a (click)="opened=true; setval(element); modalElement = element">{{element.entry}}</a> 
     </li> 
    </ul> 
    <clr-modal [(clrModalOpen)]="opened"> 
     <h3 class="modal-title">{{modalElement?.entry}}</h3> 
      <div class="modal-body"> 
       <p>Description :&emsp;{{modalElement?.entryDesc}}</p> 
       <br> 
      </div> 
      <div class="modal-footer"> 
       <button (click)="moveInOn(modalElement); opened=false;" type="submit" class="btn btn-sm">Move to Ongoing</button> 
       <button (click)="moveInCo(modalElement); opened=false;" type="submit" class="btn btn-sm">Move to Completed</button> 
      </div> 
    </clr-modal> 
</div> 

Demo

+0

ありがとうございます。あなたは私の問題を解決しました。 modalElementやもっと知るのに役立つリソースについてもっと教えてください。 – darsh

+0

@darsh 'modalElement'は角度フレームワークの一部ではありません。これは、コンポーネントでテンプレートに割り当てることによって作成した変数です。これは、コンポーネントでプロパティを作成し、ビューで参照するのと同じです。私はそれを 'フーバー'と呼ぶことができ、これもうまくいったでしょう。しかし、 'element '以外のものを呼び出す必要がありました。なぜなら、その名前の変数が' * ngFor'の内部で既に使用されていたからです。 –

+0

もう一つのことです。なぜあなたは '?'を使用しますか? modalElement.entryだけではなく、modalElement?.entryと同じです。ありがとうございました! – darsh

関連する問題