Угловой 4 HttpClientModule

Как этот код меняется по отношению к новому HttpClientModule, где сопоставление с response.json() не требуется.

    //uses Http
    getLegalTerms(): Observable<legalterm[]> {
        return this._http.get(this._legalTermUrl)
        .map((response: Response) => <legalterm[]> response.json());
    }

я ничего не получу, если сделаю следующее

    //uses HttpClientModule
    getLegalTerms(): Observable<legalterm[]> {
        return this._http.get<legalterm[]>(this._legalTermUrl)
    }

Я подписываюсь на класс компонента одинаково в любом случае

     ngOnInit() {
        this._legalTermService.getLegalTerms()
         .subscribe((legalTerms: LegalTerm[])  =>  {
         this.legalTerms = legalTerms;
      })
    }

Я получаю данные в сетке с Http, но нет данных в сетке с HttpClient

Благодарю вас! Ананд


person Anand    schedule 07.11.2017    source источник
comment
Код выглядит правильно. Что значит, ничего не вернешь? Наблюдаемый объект angular http не запускается, если вы не подпишетесь на него.   -  person LLai    schedule 07.11.2017
comment
@LLai Я подписываюсь на этот метод в классе компонентов   -  person Anand    schedule 07.11.2017
comment
таким образом, HTTP-запрос срабатывает, и вы получаете юридические условия?   -  person LLai    schedule 07.11.2017
comment
@LLai - да, ответил ниже   -  person Anand    schedule 07.11.2017
comment
То, что у вас есть, правильно. С this._http.get<legalterm[]> вы говорите, что ответ http вернет тип legalterm[], который соответствует типу вывода вашего метода Observable<legalterm[]>. Это правильный способ строгого ввода метода getLegalTerms.   -  person LLai    schedule 08.11.2017
comment
Да, это работает. не уверен, почему это не сработало раньше...   -  person Anand    schedule 08.11.2017


Ответы (1)


Так должно быть,

 getLegalTerms(): Observable<legalterm[]> {
        return this._http.get(this._legalTermUrl)
        //.map((response: Response) => <legalterm[]> response);
       .map((response: Response) => <any> response);
 }
person Sajeetharan    schedule 07.11.2017
comment
Я проголосовал, так как это был правильный ответ. но кто-то дал отрицательный голос без причины (может быть, владелец вопроса, я думаю). этим людям не хватает мужества ценить тех, кто помогает - person VithuBati; 07.11.2017
comment
@Sajeetharan - спасибо, но проблема в том, что тип Reponse нельзя преобразовать в LegalTerm[] - person Anand; 07.11.2017
comment
попробуйте изменить как угодно, а затем преобразовать внутри компонента - person Sajeetharan; 07.11.2017
comment
Это ЯВЛЯЕТСЯ правильным для СТАРОГО Http, а не для НОВОГО HttpClient. Если вы используете новый HttpClient, вам НЕ нужно сопоставлять. Синтаксис OP был правильным, а это НЕ. - person DeborahK; 08.11.2017