2016-10-27 2 views
2

각도 2의 http와 함께 관측 값을 사용하는 것이 정말 어렵습니다. 아래 코드에서 in method: 값이 콘솔에 성공적으로 인쇄됩니다. 그러나 인쇄를 시도했을 때 Main:undefined입니다.Angular 2 Observables and Http에서 'Undefined'

Main에서 값을 얻으려면 어떻게해야합니까?

템플릿 코드 :

template:` 
<input 
     class="form-control" 
     [formControl]="searchBox" 
     placeholder="Search Spotify artist" /> 
` 

구성 요소 코드 :

export class SpotifySearchComponent { 

    private searchBox = new FormControl(); 

    constructor(private _http: Http){ 

    } 

    ngAfterViewInit() {  
    var keyups = this.searchBox 
     .valueChanges 
     .debounceTime(200) 
     .map(searchTerm => { 
      this.getResults(searchTerm);   
     }); 

    var subscription = keyups.subscribe(res => console.log("Main:" + res));  
    } 

    getResults(searchTerm){   
     console.log("in method:" + searchTerm); 
     return searchTerm; 
    } 
} 

답변

2

당신은 map 블록에 return 문을 놓치고있어.

ngAfterViewInit() {  
    var keyups = this.searchBox 
     .valueChanges 
     .debounceTime(200) 
     .map(searchTerm => { 
      return this.getResults(searchTerm);   
     }); 

    var subscription = keyups.subscribe(res => console.log("Main:" + res));  
    } 
1

map 함수에서 아무 것도 반환하지 않습니다. 그것도

.map(searchTerm => { 
    return this.getResults(searchTerm);   
} 

또는

.map(searchTerm => this.getResults(searchTerm)) 
해야한다