2017-01-10 11 views
-3

Я знаю, как передавать данные в и из вложенного компонента. Но у меня есть служба, которая получает некоторые данные из REST API. Мне нужно, чтобы URL-адрес моей службы изменился, когда я нажимаю и запускаю функцию. Мне нужно передать идентификатор моей службе и изменить мой URL.Угловое 2-проводное значение для обслуживания

I мой компонент:

showUnitDetails(selectedUnit) { 
    this.unitId = selectedUnit; 
    this.unitDetails = true; 
    this._unitService.getUnit(this.unitId).subscribe(resUnitData => this.unit = resUnitData, err => alert('Error')); 
} 

В моей службы:

getUnit(id: unitId){ 
    return this._http.get(this._url).map((response: Response) => response.json()); 
} 

Но когда я сохранить свою службу я получаю ошибку "Cannot find name unitId".

+0

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

+0

самостоятельно удалять сообщение. – Aravind

ответ

1

Я сделал вам быстрый пример, показывающий, как подключить компонент и службу http вместе с параметрами, в которых вы можете передать идентификатор и URL-адрес.

import {Component, Injectable, NgModule} from "@angular/core" 
import {Http} from "@angular/http" 

//A Module 
@NgModule({ 
    declarations: [MyComponent], 
    providers: [MyService], 
}) 
export class MyModule 
{ 
} 

//The Component 
@Component({ 
    selector: 'my-component', 
    templateUrl: './my-component.component.html', 
}) 

export class MyComponent 
{ 
    private id: number; 
    private url: string; 

    constructor(public myService: MyService) 
    { 
    } 

    ngOnInit() 
    { 
     this.id = 123; 
     this.url = '/api/stuff'; 

     this.myService 
      .getStuff(this.id, this.url) 
      .subscribe(response => 
       { 
        console.log(response); 
       }, 
       error => 
       { 
        console.log(error); 
       }) 
    } 
} 

//The Service 
@Injectable() 
export class MyService 
{ 
    constructor(private http: Http) 
    { 
    } 

    getStuff(id: number, url: string) 
    { 
     const urlWithId = url + id; 

     return this.http 
      .get(urlWithId) 
      .map(res => res.json()) 
    } 
} 
+0

Моя функция компонента выглядит так: 'showUnitDetails (selectedUnit) { this.unitId = selectedUnit; this.unitDetails = true; this._unitService .getUnit (this.unitId) .subscribe ( resUnitData => this.unit = resUnitData, ERR => тревога ('Ошибка') ); } ' В моей службы: ' конструктор (частный _http: Http) {} getUnit (ID: UnitID) { возвращение this._http .get (this._url) .map ((ответ: Ответ) => response.json()); } ' Но когда я сохраняю свое обслуживание, я получаю сообщение об ошибке« Не могу найти имя unitId ». – ComCool

+0

попробуйте 'getUnit (id: number)'. Это бросание ошибок, поскольку вы, вероятно, не создали модель 'unitId', вам не нужны модели для описания одного свойства. Модели используются для описания набора свойств с многочисленными типами. –

+0

Также вы не используете идентификатор, который вы передали службе, я думаю, вам нужно будет добавить его на свой URL-адрес. –

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

  • Нет связанных вопросов^_^