映射对模型对象的响应

时间:2018-04-01 12:35:05

标签: javascript angular typescript angular-httpclient

我正在尝试从GET调用到我的对象的地图响应,该对象具有带有JSON对象的属性1:1。这是我的代码:

线程模型:

export class Thread {
  private source: Source;
  private target: Target;
  private messages: Message[];

  constructor(data) {
    this.source = data.source;
    this.target = data.target;
    this.messages = data.messages;
  }

  sum() {
    return 'Hello from Thread';
  }
}

线程服务:

@Injectable()
export class ThreadService {
  constructor(private http: HttpClient) {
  }
  getAll(): Observable<Thread[]> {
    return this.http.get<Thread[]>('/api/thread').map(value => new Thread(value))
  }
}
ThreadService中的

getAll方法给出了以下错误:

  

src / app / service / thread.service.ts(13,5):错误TS2322:类型   &#39; Observable<Thread>&#39;不能分配给&#39; Observable<Thread[]>&#39;。   输入&#39; Thread&#39;不能分配给&#39; Thread[]&#39;。       财产包括&#39;类型&#39; Thread&#39;。

中缺少

您能否告诉我将模型响应映射到模型的正确方法是什么?我可以在该模型中调用自定义方法?我读了一些关于拦截器的事情,但我无法找到任何例子。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

@Injectable()
export class ThreadService {
  constructor(private http: HttpClient) {
  }
  getAll(): Observable<Thread[]> {
    return this.http.get<Thread[]>('/api/thread').map(threads=> threads.map(thread => new Thread(thread)))
  }
}