はあなたのplunkerに2つの問題を抱えています。
- 最初の問題は、セカンドセレクタに未定義を渡しています。
first
は変更時にのみ設定するため、初期値は未定義です。あなたのコンポーネントを壊していた*ngIf
をsecond-selector
に追加するか、変数first
を初期値で初期化することができます。例えばparent1。
があなたのplunkerでこれを解決するために、私はselect
にあなたがSecondSelectorPipeに引数を期待している間、親オブジェクトe.g. parent1
ではなく、実際の親オブジェクトを表す文字列値を放出している、second-selector
- 第二の問題で* ngIfを追加しました文字列ではなく親オブジェクトになります。
プロパティを<option>
にfirst-selector
に割り当てました。SecondSelectorPipeに、親オブジェクトの文字列コードが必要です。
変更されたオプションの要素:
<option *ngFor="#val of values" [value]="val.code">{{val.title}}</option>
変更されたパイプ上のライン:
return value.filter((item)=>item.parent === parent);
Here is your plunker working
しかし、あなただけのような単純なタスクのためのパイプを使用している場合、あなたはvalues
変数をsecond-selector
に置き換えることで置き換えることができますgetterで返されたリストをフィルタリングします。
例:
export class SecondSelector{
@Output() select = new EventEmitter();
@Input() parent;
valuesList:ValueModel[] = [
new ValueModel("ValueCode6","Child1","ValueCode1"),
new ValueModel("ValueCode7","Child2","ValueCode1"),
new ValueModel("ValueCode8","Child3","ValueCode2"),
new ValueModel("ValueCode9","Child4","ValueCode3"),
new ValueModel("ValueCode10","Child5","ValueCode3"),
new ValueModel("ValueCode11","Child6","ValueCode4"),
new ValueModel("ValueCode12","Child7","ValueCode5"),
new ValueModel("ValueCode13","Child8","ValueCode5"),
new ValueModel("ValueCode14","Child9","ValueCode5"),
new ValueModel("ValueCode15","Child10","ValueCode5"),
];
get values(){
return this.parent ?
this.valuesList.filter(item=> item.parent === this.parent):
[]; // to avoid errors, if parent is undefined, return empty list
}
}
Here is a working plunker
、私はいくつかの場所でそれを再利用していますので、私は、パイプを使用しています。 – BillF
Angularチームが[ngValue]を追加してオブジェクトをキャプチャするようにしたことを追加したいと思いますが、[value ]は、単一タイプのプロパティに対して引き続き使用されます。 – BillF