Ошибка TS2339: свойство «JSON» не существует для типа «Объект».".map (resp => resp.JSON ())" угловой 4 - PullRequest
0 голосов
/ 15 сентября 2018

В моем файле contacts.service.ts. У меня есть свой код

import {Injectable} from '@angular/core';
import {HttpClient} from "@angular/common/http";

@Injectable

export class contactsService{

constructor(public http: HttpClient){

}

getContact(){
     return this.http.get('http://localhost:8080/chercherContacts? 
  mc=sa&page=2&size=6')
     .map(resp => resp.JSON());


 }

}

У меня проблема в функции getContact () , потому что HttpClient не хочет отображать, и я получаю сообщение, и я получаю сообщение: Свойство 'JSON' делает не существует для типа «Объект»

Как можно изменить этот код, если я забуду .map в этой функции

Дайте мне совет, когда я смогу исправить этот код в моем проекте и подумать обо всем.

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018

В моем приложении. У меня есть служба в каталоге services в этой папке У меня есть первая служба, когда я помещаю contact.service.ts В этой службе у меня есть

import {HttpClient} from "@angular/common/http";

@Injectable

export  class ContactsService {

constructor( public http: HttpClient){

}

getContacts(){
  return this.http.get("http://localhost:8080/findPersons?mc=wa&page=1&size=6");
}

}

в моем компоненте contact.component.ts Я хочу получать этот URL всякий раз, когда я пишу в этом документе этот код

import { Component, OnInit } from '@angular/core';
import {HttpClient} from "@angular/common/http";
import {ContactsService} from "../../services/contact.service";

@Component({
selector: 'app-contact',
templateUrl: './contact.component.html',
styleUrls: ['./contact.component.css']
})
export class ContactComponent implements OnInit {

pageContacts: any;

constructor(public http: HttpClient, public contactService: ContactsService) { }

ngOnInit() {

this.contactService.getContacts().subscribe(data => {
  this.pageContacts = data;
}, err => {
  console.log("L'erreuR : "+err);
});

 }

}

Но у меня есть ошибка ОШИБКА в src / services / contact.service.ts (4,1): ошибка TS1238: невозможно разрешить сигнатуру декоратора класса при вызове в качестве выражения.

линия (4,1) находится в линии @ Injectable я не знаю, в чем проблема

моя проблема - вырезать этот код

ngOnInit() {
this.http.get('http://localhost:8080/findPersons?mc=wa&page=1&size=6')
  .subscribe(data =>{
    this.pageContacts = data;
  }, err => {
    console.log('ErreuR : '+err);
  });

}

в два. Один из сервисов, когда я получаю URL, а второй - для записи данных на веб-странице

И это все

0 голосов
/ 18 сентября 2018

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

Angular Injectable decorator - Ожидается 0 аргументов, но получено 1

спасибо всем, мой друг в этом стеке :):

0 голосов
/ 15 сентября 2018

С Angular HttpClient 4.x + он по умолчанию анализирует JSON-ответ в объект, вам не нужно выполнять json() для ответа, как вы это делали в версии 2.x и ниже. Вы можете просто сделать:

getContact() {
  return this.http.get('http://localhost:8080/chercherContacts?mc=sa&page=2&size=6');
}

Вам нужно только указать responseType , если это не JSON:

getContact() {
  return this.http.get('http://localhost:8080/chercherContacts?mc=sa&page=2&size=6', {responseType: 'text'});
}

Кроме того, ознакомьтесь с документами 4.x относительно Проверьте тип ответа , где вы можете указать интерфейс, чтобы сообщить HttpClient, какой тип ответа будет. Это рекомендуется и обеспечит поддержку при наборе в потребляющих компонентах / сервисах / etc:

SomeInterface {
 foo: number;
 bar: string;
}

getContact() {
  return this.http.get<SomeInterface>('http://localhost:8080/chercherContacts?mc=sa&page=2&size=6');
}

Вот простой пример в действии.

Надеюсь, это поможет!

...