子コンポーネントのonSearch @Outputにサブスクライブできるようにして、子コンポーネントで検索が実行されたときにデータを返すという約束親コンポーネントで処理されます。 Angularでこれを行う方法はありますか?私はonSearchを@Inputにしようとしましたが、それは約束を返すために働きますが、 "this"スコープは子コンポーネントです。だから私はそれが@oOutput角度 - @OutputとPromisesを使用して親コンポーネントにコールバック
@Component({
selector: 'child-component-search',
templateUrl: './child-component.html'
})
export class ChildSearchComponent{
public data : any = new Array();
@Output() onSearch: any = new EventEmitter();
search(form: any) {
let self = this
this.onSearch.emit({searchText:"Text"}).then(res=>{
self.data = res;
},rej=>{})
}
}
@Component({
selector: 'parent-component-search',
template: `
<child-component-search (onSearch)="search($event)"></child-component-search>
`
})
export class ParentComponent{
constructor(public service: MyService){}
search(search: any) {
let self = this
return new Promise((resolve,reject)=>{
this.service(search.searchText).then(res=>{
resolve(res)
},rej=>{})
})
}
なぜあなたは 'let = self'を使っているのか分かりません。これはあなたのために処理されるので、あなたはタイスクリプトです);)また、 'this.service'は関数ではないので、問題は単にthis.service(...)から来るかもしれません。それはクラスなので、そこから関数を呼び出す必要があります。 – Supamiu