Angular 7提取可观察数据

时间:2019-03-21 14:31:02

标签: javascript json

我是新手。

我想从可观察对象中提取数据。我这样做:

validnomi(key : string): void {
  this.demandesnomiftodisplay = 
    this.demandenomisService.getSingleDemandenomis(key).subscribe(val => 

    {const civ = val[0].civ; 
     const datedemande = val[0].datedemande; 
     const nom = val[0].nom; 
     const prenom = val[0].prenom; 

     }
  );
}

我的service.ts:

getSingleDemandenomis(key: string){
return this.database.list('/Demandes/DemandesBALnominatives', ref => ref.orderByKey().equalTo(key)).snapshotChanges().pipe(map(actions => {
  return actions.map(a => {
    const data = a.payload.val();
    const key = a.payload.key;
    return {key, ...data };
  });
}));
 }

但是我有这个错误:

property prenom does not exist on type {key : string}
property nom does not exist on type {key : string}
property civdoes not exist on type {key : string}

....

3 个答案:

答案 0 :(得分:2)

看起来正确,您只需要进一步阅读数组的第一个元素并访问所需的属性即可。

您的服务

long a = 479001600;

组件:

getSingleDemandenomis(key: string): Observable<{key: string; datedemande: string}[]> {
   return this.database.list('/Demandes/DemandesBALnominatives', ref => 
       ref.orderByKey().equalTo(key)).snapshotChanges().pipe(map(actions => {
          return actions.map(a => {
              const data = a.payload.val();
              const payloadKey = a.payload.key;
              return {key: payloadKey, ...data };
          });
   }));
 }

答案 1 :(得分:1)

日志中的括号表示您不是在获取对象而是对象数组。只需获取数组的第一个元素,便可以访问对象的所有属性。

此外,您不应使用JSON.stringify(),因为它将对象数组转换为字符串。

validnomi(key : string) {
    this.demandesnomiftodisplay = this.demandenomisService.getSingleDemandenomis(key).subscribe(val => 
        // This will get the key from your object
        console.log(val[0].key);
    );
}

答案 2 :(得分:1)

我会坚持观察到的:

validnomi(key : string) {
  this.demandesnomiftodisplay = 
    this.demandenomisService.getSingleDemandenomis(key).pipe(
    pluck('datademande')
  ).subscribe(val => console.log(val));

这里有一个StackBlitz来说明。