Сервис не может получить доступ к данным из другого Сервиса - PullRequest
0 голосов
/ 13 апреля 2020

У меня сейчас какие-то проблемы с Angular 8. Я пытаюсь создать веб-приложение, в котором вы можете искать пользователей и в ответ получить всех пользователей, которые соответствуют вашему запросу + сообщения первого из перечисленных пользователей. Для этого я создал сервис под названием SearchService, который имеет функцию onSearch для отправки поиска в серверную часть.

onSearch(search: string){

this.http.get(URL + search.trim()).subscribe((searchResponse: {user: Array<Users>, userPosts: Array<Post>} => {
  this.searchArray = searchResponse
  this.searchSubject.next(searchResponse)
})

После этого, когда я пытаюсь полюбить пост пользователя, я вызываю эту функцию из моего PostService

onLikeOrDislikePost(like: boolean, postId: string, section: string) {
    const data = {
        id: postId,
        like: like,
    };
    this.http.post(URL + '/like-dislike/post', data).subscribe((response: Post) => {
        this.updatePosts(response, section)
    })
}

Как вы можете видеть, я затем вызываю мою функцию updatePosts, которая выясняет, где находится сообщение, то есть, находится ли сообщение в разделе «Профиль» или в разделе «Поиск», какой индекс он имеет в массиве, и даже если он находится в массиве или нет. Свою функцию я также использую для добавления Posts et c. вот почему это может показаться немного большим.

updatePosts(postToUpdate: Post, section: string) {
    let indexOfPost = -1;

    if(section === 'profil'){  

      this.dataService.userPosts.map((post, index) => {
        if(post._id === postToUpdate._id){
          indexOfPost = index;
          return
        }
      })

      if(indexOfPost !== -1){
        this.dataService.userPosts.splice(indexOfPost, 1, postToUpdate)
      } else {
        this.dataService.userPosts.splice(0, 0, postToUpdate)
      }

      this.dataService.userPostSubject.next(this.dataService.userPosts)

    } else if(section === 'search'){

      this.searchService.searchArray.posts.map((post, index) => {
        if(post._id === postToUpdate._id){
          indexOfPost = index;
          return
        }
      })

      if(indexOfPost !== -1){
        this.searchService.searchArray.posts.splice(indexOfPost, 1, postToUpdate)
      } else {
        this.searchService.searchArray.posts.splice(0, 0, postToUpdate)
      }

      this.searchService.searchSubject.next(this.searchService.searchArray)
    }
  }

Моя проблема сейчас заключается в том, что, хотя все работает нормально с разделом profil, когда функция переходит в раздел поиска, происходит сбой, потому что this.searchService.searchArray не определен, хотя я установил его с помощью Функция onSearch. Я уже проверял, правильно ли я ввел Службу, но все мои службы вводятся root, кроме того, я искал другие компоненты, где я использую свой searchService с отладчиком, и каждый раз, когда был определен this.searchservice.searchArray.

Я благодарен за любую помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...