イベントを親コンポーネントに発行するEventEmitterがあります。親コンポーネントから一連の命令を実行し、結果が呼び出し元に返されます。 this.filteredList私はそれを求めていますリストを含むように親コンポーネントによって返されたが、それは返すとき、filteredListこれはデCHID成分「autocomplete.component.ts:」ですEventEmitterのangle2を使用した戻り値
未定義であるthis.changeFilter.emit、this.filteredListでリターンがある //未定義:
export class AutocompleteComponent implements OnInit {
...
public filteredList = [];
@Output() changeFilter = new EventEmitter<any>();
filter(){
//This is where I want the filteredList to contain the list returned by the other component:
this.filteredList =this.changeFilter.emit({query:this.query});
if (filteredList){
console.log(filteredList);
}
}
テンプレート:
<div class="container">
<div class="input-field col s12">
<input id="clienteAut" type="text" class="form-control bs-autocomplete" style="width:300px;" [(ngModel)]="query" (keyup)="filter()" on-click="filterAll()">
<label for="clienteAut"></label>
</div>
<div class="divLista" *ngIf="filteredList.length > 0" style="">
<div class="divFila" *ngFor="let item of filteredList">
<ul >
<li>
<a (click)="select(item)">{{item.CodigoCliente}} - {{item.Nombre}}</a>
</li>
</ul>
</div>
</div>
</div>
これは、親コンポーネント「busquedacompiadoras.component.ts」です:
//機能「onChangeFilterClientes」は、データとリストを返すが、それは子コンポーネントこれの持つEventEmitterに戻ったとき。 filteredListは定義されていません //任意のアイデアですか?
export class BusquedaCopiadorasComponent {
clientes: Array<any> //= [];
ngOnInit() {
this._comunService.getMarcas()
.subscribe((clientesData) => {
this.clientes = clientesData as clienteModel[];
//this.rellenarMarcas(marcasData);
});
}
onChangeFilterClientes(obj:any):any[]{
this.clientesFilter = this.clientes.filter(c => c.Nombre.toString().toLowerCase().indexOf(obj.query)>-1);
return this.clientesFilter;
}
:AutocompleteComponentはのOnInit { ...
そしてBusquedaCopiadorasComponentテンプレートは以下のようにfilteredListを渡すで実装
エクスポートクラスを'EventEmitter'は' Observable'の基底で、アクションはasynですc(あなたの現在のチャンクの同期コードが完了した後に起こります)。値の更新がいつ行われたかを通知するには、たとえば'ngOnChanges'を確認する必要があります。 –
'filteredList'を代わりに' @Input() 'として定義し、それを親に設定するだけです。 'onChangeFilterClientes'から値を返す必要はありません。 '[filteredList] =" clientesFilter "'(HTML) – Arg0n
申し訳ありませんが、あなたの説明の例を挙げることはできますか? – ararb78