Угловой 2 предмет не является функцией

1

Попытка связаться с двумя компонентами, я думал, что смогу сделать http-вызов, а может быть, mergeMap или switchMap для темы?

Что-то вроде

import {Subject} from 'rxjs/Subject';

 constructor(private _http: HttpClient) {
    this.populateList = new Subject<Blog[]>();
 }

getBlogs(){
  return this._http.get(this.blogsURL+'blogs')
       .map((result: Response ) => {
       this.blogs = result['blogs'];
    return this.blogs;
  }).switchMap((blogs)=>this.populateList.next(blogs))
}

Но я понимаю:

Вы указали "undefined", где ожидался поток. Вы можете предоставить Observable, Promise, Array

Я получаю ошибки, просто пытаясь подписаться на тему:

 this.blogsService.populateList()
      .subscribe((res)=>{
      console.log(res)
  })

this.blogsService.populateList не является функцией

То, что я ищу, - это способ обновления представлений после http-звонков

Теги:
angular

1 ответ

1
Лучший ответ

Вам нужно подписаться как без(). Потому что это не функция. сюрприз

 this.blogsService.populateList.subscribe()

и переписать первую функцию, подобную этой, потому что вам не нужна карта коммутатора, которую вам просто нужно сделать, это побочный эффект для заполнения списка.

getBlogs(){
  return this._http.get(this.blogsURL+'blogs')
       .map((result: Response ) => {
       this.blogs = result['blogs'];
    return this.blogs;
  }).do((blogs)=>this.populateList.next(blogs))
}
  • 0
    Теперь я получаю «.do is not function», также я подписался на Subjects ранее, как я показал, и у меня не было проблем
  • 0
    Вы импортировали 'rxjs / add / operator / do'
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню