Angular 无法向模型订阅forkjoin

Angular 无法向模型订阅forkjoin,angular,fork-join,Angular,Fork Join,我正在学习如何在Angular中使用ForkJoin;我可以使用回调(模型属性)发出单个请求并在组件中呈现它,但是当涉及到这些组合请求时,我在单个请求中使用的相同模型不被接受。它说类型“[any,any]”不能分配给类型“User”。为什么? 模型类: export class User { public name: string; public email: string; public phone: string; public body: string; cons

我正在学习如何在Angular中使用ForkJoin;我可以使用回调(模型属性)发出单个请求并在组件中呈现它,但是当涉及到这些组合请求时,我在单个请求中使用的相同模型不被接受。它说类型“[any,any]”不能分配给类型“User”。为什么?

模型类:

export class User {


  public name: string;
  public email: string;
  public phone: string;
  public body: string;

  constructor(user: any) {

    this.name = user.name;
    this.email = user.email;
    this.phone = user.phone;
    this.body = user.body;

  }

}
服务:

export class DataService {

  public user: User;
  public url = 'https://jsonplaceholder.typicode.com/users/';

  constructor(private http: Http) {   }


  getFork(callback: (receiver: User) => void) {

  const combined = Observable.forkJoin(
    this.http.get('https://jsonplaceholder.typicode.com/users/').map(res => res.json()),
    this.http.get('https://jsonplaceholder.typicode.com/posts/').map(res => res.json())
  );

  combined.subscribe(values => {
    this.user = values; -> 'this.user' gets red
    callback(this.user);
    console.log(this.user);
  });
 }


// This method works fine
  getData(callback: (receiver: User) => void) {

    return this.http.get(this.url)
      .map(res => res.json())
      .subscribe(users => {
        this.user = users;
        callback(this.user);
        console.log(this.user);
      });
  }

forkJoin返回数组中API的结果。所以在你的代码中

combined.subscribe(values => {
    this.user = values; -> 'this.user' gets red
});
[resultsFromUsersApi,resultsFromPostsApi]

错误说明您正试图将数组分配给此.user,但用户被指定为user类型

public user: User
如果您想在订阅中存储用户api的结果,您必须像

combined.subscribe(values => {
    this.user = values[0];
});

forkJoin返回数组中API的结果。所以在你的代码中

combined.subscribe(values => {
    this.user = values; -> 'this.user' gets red
});
[resultsFromUsersApi,resultsFromPostsApi]

错误说明您正试图将数组分配给此.user,但用户被指定为user类型

public user: User
如果您想在订阅中存储用户api的结果,您必须像

combined.subscribe(values => {
    this.user = values[0];
});

太好了,谢谢你的回答和清楚的解释@LLai。我可以使用
值[0]
访问第一个get,使用
值[1]
访问第二个get,非常好,感谢您的回答和清晰的解释@LLai。我可以使用
值[0]
访问第一个get,使用
值[1]
访问第二个get