2017-10-27 2 views
2

活字体は、プロパティ名をタイプ上に存在しない文句PostResponse []この行のPOSTDATA()メソッドで

return this.http.post<PostResponse[]>(`${this.ROOT_URL}/users`, data).map(res => res.name); 

それはPostResponse []型に存在しないプロパティ名を訴えます。ここで

は、サービス内の完全なコードで、

import { Injectable } from '@angular/core'; 
import { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http'; 
import { Observable } from 'rxjs/Observable'; 
import { ItemsResponse } from './data.interface'; 
import 'rxjs/add/operator/map'; 

interface PostResponse { 
    data: [ 
     { 
      name: string; 
      job: string; 
     } 
    ]; 
} 
@Injectable() 

export class RepositoryService { 
    readonly ROOT_URL = 'https://reqres.in/api'; 
    constructor (private http: HttpClient) { 
     console.log('idea repository service instance'); 
    } 
    postData(): Observable<PostResponse> { 
     const data = [ { 
      name: 'Morpheus', 
      job: 'Developer' 
     } ]; 
     return this.http.post<PostResponse[]>(`${this.ROOT_URL}/users`, data).map(res => res[0].name); 
    } 
} 

は、誰かが適切に型キャストとするときPostResponse []とPostResponseを使用する方法を教えてできますか? screen shot of the error

答えて

2

配列のnameプロパティにアクセスしようとしています。 、あなたのマップ方法は、単一の文字列を返しているので、あなたのPOSTDATAを - あなたはEDIT

return this.http.post<PostResponse>(`${this.ROOT_URL}/users`, data).map(res => res.name); 

期待している配列

return this.http.post<PostResponse[]>(`${this.ROOT_URL}/users`, data).map(res => res[0].name); 

のインデックスにアクセスしたり、タイプを変更する必要があるのいずれか()メソッドは型を返す必要がありますObservable<string>

postData(): Observable<string> { 
    const data = [{ 
     name: 'Morpheus', 
     job: 'Developer' 
    }]; 
    return this.http.post<PostResponse[]>(`${this.ROOT_URL}/users`, data).map(res => res[0].name); 
} 

// interface 
export interface PostResponse { 
    name: string; 
    job: string; 
} 

AJT_82のスタックブリッツを参考にしてください(stackblitz.com/edit/angular-4mgpbw?file=app%2Fapp.component.s)

+0

私たちは[チャットでこのディスカッションを続行しましょう](http:// chat .stackoverflow.com/rooms/157627/discussion-between-llai-and-karty)。 – LLai

関連する問題