2016-06-04 3 views
0

У меня есть служба и метод, которые получают данные из API. Как я могу взять эти данные в контроллере?Отправлять данные из службы в контроллер

getRoom(id) { 
    let headers = new Headers({ 'Content-Type': 'application/json' }) 
    let body = JSON.stringify({id}); 
    let options = new RequestOptions({ headers: headers }); 
     this._http.post('/api/forum/findRoom', body, options) 
     // .map(res => console.log(res)) 
      .subscribe(res => { 
       // return ??? 
      }); 

}; 

ответ

1

ПРИМЕЧАНИЕ: пожалуйста, импортируйте необходимые предметы, которые здесь не показаны.

export class sharedService{ 

getRoom(id) { 
    let headers = new Headers({ 'Content-Type': 'application/json' }) 
    let body = JSON.stringify({id}); 
    let options = new RequestOptions({ headers: headers }); 
     return this._http.post('/api/forum/findRoom', body, options) <----return keyword 
      .map(res => console.log(res))  

} 
} 

main.ts

import {AppComponent} from './AppComponent' <---path to AppComponent 
import {sharedService} from './sharedService' <--- path to sharedService 

bootstrap(AppComponent,[sharedService]); <----this injection will create single instance of sharedService. 

AppComponent.ts

import {sharedService} from './sharedService' <---path to sharedService 

export class AppComponent 
{ 
    constructor(private ss:sharedService) <--- dependency injection 
    { 

    } 

    ngOnInit(){ 
      ss.getRoom(2).subscribe( <------subscribe to the service 
       (data) => { 
        this.result=data; 
       }, 
       err=>console.log(err), 
       ()=>console.log('done') 
       ); 
    } 

} 
0

Как вы уже не отвечал правильный ответ, не показывая свои импорта, во-первых, пожалуйста, посмотрите на здесь

Теперь убедитесь, что вы импортировали все необходимые зависимости для создания запроса HTTP. теперь вы можете использовать этот код как shared_service

getRoom(id) { 
    let headers = new Headers(); 
    headers.append("Content-Type", 'application/json'); // header portion ends here 

    let body = JSON.stringify({id}); // body ends here 

    let options = new RequestOptions({ 
     method: RequestMethod.Post, 
     url: '/api/forum/findRoom', 
     headers: headers, 
     body: body 
    }) 
    return this.http.request(new Request(options)) 
     .map((res: Response) => { 
      if (res) { 
       return [{ status: res.status, json: res.json() }] 
      } 
     }); 
}; 

Теперь это создаст вашу общую услугу для создания почтового запроса. теперь, когда вам требуется взять данные (ответ) в контроллере (классе). вам просто нужно импортировать этот файл и вызвать метод с именем getRoom(), используя имя класса в качестве префикса. и затем подпишитесь там, чтобы получить такие данные: -

class_name.getRoom('your_data') 
    .subscribe((data) => { console.log(data);}, <------subscribe to the service 
       err=>console.log(err), 
       ()=>console.log('done')); 

Надеюсь, это очистит все, что связано с Http. если у вас есть какой-либо запрос.

также получить запрос с использованием HTTP см здесь Working Example of Http

+0

благодарственное, вы мне помочь. Но какая разница между вашей версией и предыдущим ответом? –

+0

Разница заключается в том, что я опубликовал рабочий пример для лучшего понимания, также предоставил правильный способ предоставления заголовков, тела и всех при использовании http, предоставить ссылку для пошагового поиска для http в угловом2 –

Смежные вопросы