2017-06-13 8 views
0

私は親コンポーネントとレジスタコンポーネントの2つのコンポーネントを持っています。子コンポーネントを親コンポーネントに条件付きで追加する方法は?

import { Component, OnInit } from '@angular/core'; 

@Component({ 
    selector: 'register', 
    templateUrl: '../templates/register.html' 
}) 
export class RegisterComponent implements OnInit { 
    ngOnInit() { 
     this.registerService.getRoleList() 
     .subscribe(res => { 
      if(res.data){ 
       this.instRoleList = res.data.roleList; 
      } 
     }); 

    /* ngOnInit calls a service from which data is received and certain 
     conditions are met. I want this service to go only when getDetails() is called and <register> should get append to <div id="signup> 

*/ 
    } 
} 

register.htmlコードスニペットは、次のようになります:

<div class="tab-content"> 
    <div class="tab-pane" id="signup" (click)="getChild()"> 
     <register></register> --//register component 
    </div> 
</div> 

register.component.tsのようになります。

ParentComponent.htmlは次のようになります(それがデータでレジスタサービスから受信依存しますデータ "")

ですから、getChild()をクリックしてコンポーネントのget追加された<div id="signup">

どのようにこれを行うには?

<div class="tab-pane" id="signup" (click)="getChild()"> 
      <!-- register component to append here on getChild() click --> 
</div> 

私は既に以下のコードを使用していますが、動作しませんでした。

$('#signup').append('<register></register>') 
+0

あなたが探しているもののような '* ngIf'サウンド。 – robbannn

+0

単純なブール値のフラグはおそらくかかりますか?次のようなものです: '' – Alex

+0

あなたがangular -_-を使いたい場合は、jQueryで考えるのをやめてください! –

答えて

0

これは簡単にngIfディレクティブでarchievedすることができます

<div class="tab-content"> 
     <div class="tab-pane active" id="signin"> 
      <!-- other code --> 
     </div> 
     <div class="tab-pane" id="signup" (click)="getChild()"> 
      <register *ngIf="condition"></register> --//register component 
     </div> 
    </div> 

@Component({ 
    selector: 'register', 
    templateUrl: '../templates/register.html' 
}) 
export class ParentComponent { 
    condition: boolean = false; 
    getChild(){ 
     this.condition = !this.condition; 
    } 
} 

このクリックイベントがこのアプローチにトグル機能として動作します。

+0

登録コンポーネントには、ngOnInit()のサービスコールが含まれています(下のように配置されていると、その呼び出しが行われます)。

--//register component
getDetails()をクリックすると、登録コンポーネントはそのdivを追加して、そのサービス呼び出しを行う必要があります。 – Backtrax

+0

あなたの質問を再定式化すると、その中の "getDetails"について話さない;) –

+0

Ques。編集されました。親切な一見 – Backtrax

関連する問題