Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从后端返回对象的响应中获取angular2中的数据?_C#_Angular - Fatal编程技术网

C# 如何从后端返回对象的响应中获取angular2中的数据?

C# 如何从后端返回对象的响应中获取angular2中的数据?,c#,angular,C#,Angular,我有返回行(即记录总数)的RESTAPI 和客户端(即对象列表)。我想订阅这个回复 return Ok(new {rows=count,clients=list}); 如果响应为returnok(clients}); 我可以像下面这样做 角度2: private clients: Client[]; this.clientService.read().subscribe( clients=> this.clients=clients, 如何读取响应是否为Angular2中

我有返回行(即记录总数)的RESTAPI 和客户端(即对象列表)。我想订阅这个回复

return Ok(new {rows=count,clients=list});
如果响应为returnok(clients}); 我可以像下面这样做 角度2:

private clients: Client[];
this.clientService.read().subscribe(
      clients=> this.clients=clients, 
如何读取响应是否为Angular2中的对象。
我想了解如何在subscribe方法中访问具有多个参数的对象

this.clientService.read().subscribe( resp => 
  this.clients = resp.json().clients;
}

API中的客户端必须具有与客户端类相同的格式。

首先,我不知道ClientService的功能。我建议你用新的。一种可能的实施方式是:

interface Client {
    name: string;
    etc...
}

interface ClientList {
    rows: number;
    clients: Client[];
}


@Injectable()
export class ClientService {

  constructor(private http: HttpClient) { }

  read(): Observable<ClientList> {
    return this.http.get<ClientList>('/api/clients');
  }
}
在html组件中,您可以使用客户端。要打印客户端的调试JSON表示形式,请执行以下操作:

{{ clients | json }}
我想这会泄露你的记忆,因为你订阅了,而且从不退订。 更好的方法是让angular使用来处理订阅和取消订阅

您的组件将具有如下可观察属性:

export class SomeComponent implements OnInit {

    clients$: Observable<Client[]>;

    constructor(private clientService: ClientService ) {}

    ngOnInit() {
        this.clients$ = this.clientService.read().map(clientList => clientList.clients);
    }
}
导出类SomeComponent实现OnInit{
客户美元:可观察;
构造函数(私有clientService:clientService){}
恩戈尼尼特(){
this.clients$=this.clientService.read().map(clientList=>clientList.clients);
}
}
注: 名称
clients$
$
结尾-这是一种惯例,表示它是可观察的,并且是许多人在使用可观察时所做的事情

调用
map()
将获取rows和clients属性的RID,这样您就只有数组了,因为这似乎是您想要做的

然后,在模板中,可以使用以下内容:
{{clients$| async | json}}

|async
部分将负责订阅您的可观察内容,并在组件被销毁时取消订阅。它还可以在发生某些事情时自动检查检测,这意味着您可以使用


这个答案中有很多更高级的主题,所以我建议你用谷歌搜索/阅读我发布的链接。

如果你的问题是“如何在JavaScript中访问对象属性?”,我强烈建议你学习你尝试使用的工具的基本知识。如果没有,请澄清问题所在;给出一个。您还应该添加
this.clientService.read()
方法的实现。我想了解如何在订阅方法中访问具有多个参数的对象。如果您的API不返回JSON,请尝试此操作。clients=resp.clients;谢谢,这很有帮助
export class SomeComponent implements OnInit {

    clients$: Observable<Client[]>;

    constructor(private clientService: ClientService ) {}

    ngOnInit() {
        this.clients$ = this.clientService.read().map(clientList => clientList.clients);
    }
}