@Serp3nt

Сервисы Angular 2?

Изучаю ангулар 2 не так давно и возник вопрос, как вызвать необходимый мне сервис.
Есть сервис :
@Injectable()
export class TaskService {
    httpAdress: string;
    constructor(private http: Http) {
        this.httpAdress= 'http://localhost:8080';
    }
getByType(id: number){
        let headers = new Headers();
        headers.append('Authorization', 'Bearer '+ JSON.parse(localStorage.getItem('token')).access_token);
        return  this.http.get(this.httpAdress+'/api/task/type/' + id,{headers: headers}).map((response: Response) => response.json());
    }


Таким образом я его вызываю в компоненте:
export class TasksComponent implements OnInit{
    model: any = {};
    type: any;
    id: number;
    constructor(
        private taskService: TaskService,
        private router:Router){}
    ngOnInit()
    {
        this.type = this.taskService.getByType(this.id);

    }
}
    }

в html файле прописываю
<p>{{type}}</p>

В итоге вижу вывод [object Object]

Так же пробовал:
this.taskService.getByType().subscribe(type => {
      this.type = type;
    },
    err => {
      console.log(err);
      return false;
    });
Это так же не дало никаких плодов
Что делаю не так? Прошу вашей помощи.
  • Вопрос задан
  • 721 просмотр
Пригласить эксперта
Ответы на вопрос 1
@sanex3339
getByType

возвращает Observable (читайте про RxJs).

В вашем случае в классе, где используется сервис, вам нужно сделать так:
export class TasksComponent implements OnInit {
    model: any = {};
    type: any;
    id: number;
    constructor(
        private taskService: TaskService,
        private router: Router
    ) {}
  
    ngOnInit() {
        this.type = this.taskService.getByType(this.id).subscribe((type) => {
            this.type = type;
        });
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы