2016-11-01 12 views
2

私は角度2に新しいです、私は質問があります。 私はModalContentと呼ばれるコンポーネントとしてモーダルを作成し、その機能の一つである:角度2は関数varを別のコンポーネントに渡します

はどのように私は同じそれを使用するために、フォームと呼ばれる全く異なるコンポーネントで機能するモード成分で変数totalSelectedを渡すことができ

@Component({ 
selector: 'modal-content', 
templateUrl: './app/d-modal/d.modal.content.component.html', 
styleUrls: [ './app/d-modal/d.modal.content.component.css' ], 
providers: [InMemoryDataService], 
}) 
export class ModalContent { 
    totalSelected:number; 

    addM() { 
     let selected = this.m.filter((x) => x["selected"]); 
     let totalSelected = selected.length; 
     console.log(totalSelected); 
     this.activeModal.close('Close click'); 
    }} 
以下:

@Component({ 

moduleId: module.id, 
    selector: 'form', 
    templateUrl: 'form.component.html', 
    styleUrls: [ 'form.component.css' ], 
    directives : [ModalContent],` 

})` 

export class FormComponent { 
@ViewChild(ModalContent) childComp: ModalContent; 
    addMForm() { 
     const modalRef = this.modalService.open(ModalContent); 
     modalRef.componentInstance.name = 'World';` 
     this.childComp.addM(); 

    for (var m = 0; m < totalSelected; m++) 
    { 
     let newGroup = new FormGroup({ 
      A :new FormControl(), 
      B: new FormControl(), 
      C: new FormControl(), 
      D :new FormControl() 
     }); 



     this.Form.controls.users.push(newGroup); 
    }} 

} 
私が達成したい事は、ユーザiがキャプチャしたいモード成分で選択したものは何でもので、モーダルコンポーネントにおける選択の数に基づいて、私のフォーム内のフィールドの数を作成することです

totalselected変数の数値をフォームコンポーネントにプッシュし、( for)をカウンタとして使用しても動作しません。

+0

は、子コンポーネントまたは親コンポーネントの他のコンポーネントですか? –

+1

あなたはおそらく何らかの種類のサービスを利用しようとしています – Bean0341

+0

イベントエミッターを試しましたか? – sebap

答えて

0

他のコンポーネントが子コンポーネントの場合は、@inputデコレータを使用して、親コンポーネントと子コンポーネントの間でデータを渡すことができます。私はthisを参考にしてください。また、totalselectedは、指定した関数の範囲内にのみ存在するので、関数から返すか、関数定義の前に作成することができます。また、あなたの関数がモーダルにあると述べたので、モーダルを他のコンポーネントの子にして@outputデコレータを使用する方が理にかなっているかもしれません。

編集 - あなたはこの

totalSelected: number; 
addM() { 
let selected = this.m.filter((x) => x["selected"]); 
this.totalSelected = selected.length; 
console.log(totalSelected); 
this.activeModal.close('Close click'); 
} 

ような何かを行うことができます今、選択された変数の合計は、関数呼び出しのスコープの外で利用可能です。

+0

こんにちは..私は入力とビューチルを試みたが、それはまだ動作していません。親コンポーネント内の子コンポーネントからtotalselectedを使用することはできません。これは常に、this.childComponentが定義されていないことを意味します – Mish

+0

スコープの問題です。関数内でtotalselectedされた変数を定義すると、その値を返すか関数の外部で変数を定義しない限り、関数からのみアクセスできます。私は自分の答えを編集して、私が何を意味するのかを示します。また、入力/出力変数の割り当てをどのように実行しているかを示すために、質問を編集することもできますか? – TyAnthoney

+0

私は編集されたバージョンを追加しました。私はあなたが解決策を見つけることを望みます。 – Mish

関連する問題