ОШИБКА TypeError: Невозможно прочитать свойство 'slice' из неопределенного в SafeSubscriber._next - PullRequest
0 голосов
/ 19 мая 2019

Когда я пытаюсь использовать оператор карты ОШИБКА TypeError: Невозможно прочитать свойство 'slice' из неопределенного в SafeSubscriber._next отображается консолью.Как я могу исправить эту ошибку?

enter image description here

Я использую приведенный ниже файл .ts в качестве служебного файла одного из компонентов

import { Post } from './post.model';
import {Injectable} from '@angular/core';
import {Subject} from 'rxjs';
import { HttpClient } from '@angular/common/http';
import { map } from 'rxjs/operators';

@Injectable({providedIn:'root'})

export class PostService{
private posts: Post[] = [];
private postUpdated = new Subject<Post[]>();

constructor(private http: HttpClient){}

getPosts(){
  this.http.get<{message: string, posts: any}>('http://localhost:3000/api/posts').pipe(map((postData) => {
    return postData.posts.map(post => {
    return {
      title: post.title,
      content: post.content,
      id: post._id
    };
    });
  })).subscribe(transformedPost => {
    this.posts = transformedPost.posts;
    this.postUpdated.next([...this.posts]);
  });
}

getPostUpdateListener(){
  return this.postUpdated.asObservable();
}

addPost(title: string, content: string){
const post: Post ={id: null, title: title, content: content };
this.http.post<{message}>('http://localhost:3000/api/posts',post).subscribe((responseData) => {
  console.log(responseData.message);
  this.posts.push(post);
  this.postUpdated.next([...this.posts]);
})


}

}

Это модель, которую я использовал как Пост

export interface Post {
  id:string;
  title: string;
  content: string;
}

1 Ответ

0 голосов
/ 19 мая 2019

Вы передаете неверные параметры для http.post:

post(url: string, body: any, options?: RequestOptionsArgs) : Observable<Response>

Если вы хотите передать заголовки, вы должны создать новый экземпляр для Headers и RequestOptions:

let headers = new Headers({ id: null, title: title, content: content  });
        let options = new RequestOptions({ headers: headers });

Или даже упростите код:

let headers = new Headers({ id, title, content});
        let options = new RequestOptions({ headers: headers });

А затем используйте его:

this.http.post<{message}>('http://localhost:3000/api/posts',options)

Также, пожалуйста, проверьте официальные документы для заголовков наhttp запросы.

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