Угловая ошибка / ошибка машинописи: тип «Наблюдаемый <unknown>» не может быть назначен типу «Наблюдаемый <Blogpost>» - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь вызвать службу в моем приложении angular, но получаю следующую ошибку в функции ngOnInIt в этой строке this.currentBlog = this.route.paramMap.pipe(

Тип «Наблюдаемый» не может быть назначен типу «Наблюдаемая». Типу "{}" не хватает следующих свойств из типа "Blogpost": id, title, short_des c, description и еще 3.

component.ts file:

import { Component, OnInit, OnDestroy } from '@angular/core';
import { Router, ActivatedRoute, ParamMap} from '@angular/router';
import { switchMap } from 'rxjs/operators';
import { BlogpostService } from '../blogpost.service';
import { Blogpost } from '../../models/blogpost';

@Component({
  selector: 'app-blog-detail',
  templateUrl: './blog-detail.component.html',
  styleUrls: ['./blog-detail.component.css']})
export class BlogDetailComponent implements OnInit, OnDestroy {
  public currentBlog: Observable<Blogpost>;

  constructor(private route: ActivatedRoute,private router: Router,private blogpostService: BlogpostService) {}
  ngOnInit() {
       this.currentBlog = this.route.paramMap.pipe(
                  switchMap((params: ParamMap) =>
                    this.blogpostService.getSingleBlogInformation(+params.get('id'))));
}
  ngOnDestroy(){
    ('blog-detail component destroyed')
  }}

Blogpost.ts:

export class Blogpost {
    id: number;
    title: string;
    short_desc: string;
    description: string;
    author: string;
    image: string;
    created_at: Date;}

Service.ts:

public getSingleBlogInformation(currentBlogId): any {
    let myResponse = this._http.get(this.baseUrl + 'getById.php?id=' + currentBlogId).pipe(
      catchError(this.handleError)
    );
    return myResponse;
  }

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Во-первых, вам не нужно создавать let в Service.ts для возврата результата HTTP-запроса.

Service.ts:

public getSingleBlogInformation(currentBlogId): Observable<Blogpost> {
    return this._http.get<Blogpost>(this.baseUrl + 'getById.php?id=' + currentBlogId).pipe(
      catchError(this.handleError)
    );
  }

Также, помните, что этот вызов возвращает Observable и в этом случае: Observable<Blogpost>.

После этого он должен работать сейчас.

0 голосов
/ 16 апреля 2020

Вам необходимо ввести возвращаемое значение вашего метода обслуживания:

public getSingleBlogInformation(currentBlogId): Observable<Blogpost> {
    return this._http.get<Blogpost>(this.baseUrl + 'getById.php?id=' + currentBlogId).pipe(
      catchError(this.handleError)
    );
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...