2017-09-07 2 views
1

入力ボックスに入力してヒットすると、チップ(角度1のタグ)を追加するアプリケーションを作成しようとしていますチップを追加する。文字列[]をタイプ4の角度4のEventEmitter文字列[]に変換する方法

@Input() addSelectedCode: string[]; 

@Output() addCode: EventEmitter<string[]> = new EventEmitter; 

私は他と同じものを設定しようとするたびに、私はエラーを取得:

私の問題は、私は次のように定義された2つの変数、addSelectedCodeとaddCodeを、持っているということです。

this.addCode = this.addSelectedCode; 

以下のエラーです:

Type 'string[]' is not assignable to EventEmitter 'string[]'. Property __isAsync is missing in string[].

私はこのerror.Can誰がソリューションに光を当てる解決する方法がわからないのですか?

解決済み:回答済みコード:this.addCode.emit(this.selectedCode);

+0

この行 'this.addCode = this.addSelectedCode;'は意味をなさない。それは何の目的ですか?双方向バインディングのためにそれらを使用したいなら、それらが正しい名前 '@Input()addSelectedCode:string [];と' @Output()addSelectedCodeChange:EventEmitter = new EventEmitter (); ' (同じ名前で、出力に 'Change'が追加されただけです) –

答えて

0

ので、上記の@Inputと@output文を持っているコンポーネントを呼び出すあなたの親の中で、あなたのテンプレートは、あなたが方法を必要とする親コンポーネントに続いて、このような<child-component [addselectedCode]="varOfThisParentContainingStringArray" (addCode)="methodInThisParentComponentReciveingStringArray($event)></child-component>

としてラインを持っている必要があります。

methodInThisParentComponentRecievingStringArray(evnt: string[]): void {...} 

それを受け取るために...

1

あなたは新しい配列でイベントを放出しようとしている場合は、あなたが必要となります。

@Output() addCode = new EventEmitter<string[]>(); 
... 

onAdd(code) { 
this.addSelectedCode.push(code); 
this.addCode.emit(this.addSelectedCode); 
} 

しかし、あなたは(addSelectedCodeが呼び出し先に見えるのライブ値になり、2ウェイを、それを必要としないことがありバウンド)。

関連する問題