2016-10-06 43 views
0

我有兩個組件,SearchComponent和RuleListComponent。 搜索是RuleList的子項。如何將observable傳遞給angularjs2中的父組件?

enter image description here

我想的SearchComponent使用API​​Service下載數據。 這些數據必須以可觀察的方式傳遞給RuleList。

的SearchComponent:

export class SearchComponent implements OnInit { 
    items: Observable<Array<string>>; 
    term = new FormControl(); # term is async 

    constructor(private apiService: APIService) { } 

    ngOnInit() { 
    this.items = this.term.valueChanges 
     .debounceTime(1000) 
     .distinctUntilChanged() 
     .switchMap(term => this.apiService.fetch('rule', term)); 
    } 
} 

APIService:

@Injectable() 
export class APIService { 
    baseUrl: string; 

    constructor(private http: Http) { 
    this.baseUrl = '//127.0.0.1:8000/'; 
    } 

    fetch(term: string) : Observable<any> { 
    console.log('searching'); 
    var search = new URLSearchParams(); 
    search.set('search', term); 
    return this.http.get(this.baseUrl, { search }) 
        .map(response => response.json()); 
    } 
} 

我怎樣才能保持距離的SearchComponent將數據傳遞到RuleListComponent異步根據不斷變化的期限多長?

+0

將'items'存儲在'APIService'上,以便您的'SearchComponent'和'RuleListComponent'可以訪問它們 –

回答

2

一個好主意是製作一個SearchService並且同時有RuleListComponentSearchComponent注入這個服務。

然後讓SearchService注入ApiService並將項目設置在SearchService中,而不是在您的組件中。組件不應該用於存儲數據

相關問題