无法检索数组值

萨基

我想以表格格式收集地址表中的元素,但不可能。这就是我在控制台中得到的

{…}
​
"-LsMm5EeM0DavWwNweBc": Object { adresse: "njkbj", commune: "Marcory", nom: "jjbjkb,", … }
​
"-LsMmBCOHZzkVL_LUwiQ": Object { adresse: "bjb", commune: "Marcory", nom: "bjhbhjh", … }
​
<prototype>: Object { … }

服务页面

 adresses: Adresse [] = [];
  adresseSubject = new Subject<Adresse[]>();

  constructor() { }

  emitAdresse(){
    this.adresseSubject.next(this.adresses);
  }


  getAdresse(){
    firebase.database().ref('adresse/' + firebase.auth().currentUser.uid )
      .on('value', (data)=>{
        this.adresses = data.val() ? data.val() : [];
        console.log();
        this.emitAdresse();
      });
  }

第ts页的页面

adresses : Adresse[];
  adresseSubscription: Subscription;

  constructor(private adresseService: AdresseService,  private router: Router) {}

  ngOnInit(){
    this.adresseSubscription = this.adresseService.adresseSubject.subscribe(
      (adresses: Adresse[]) => {
        this.adresses = adresses;
      }
    );
    this.adresseService.getAdresse();
    this.adresseService.emitAdresse();
  }

谢谢

AJT82

您得到的是一个对象,而不是数组。因此,您可以选择keyvalue像其他答案一样使用管道(进行较小的修正),或者根据响应实际创建数组。

这里使用keyvalue

<ul>
  <li *ngFor="let item of data | keyvalue">
    {{ item.value.adresse }}
  </li>
</ul>

或者,然后根据响应创建一个数组:

adressArray = [];

getAdresse(){
  firebase.database().ref('adresse/' + firebase.auth().currentUser.uid )
    .on('value', (data) => {
       for (let key in data.val()) {
         this.adressArray.push({key, ...data.val()[key]})
       }
    });
}

这样,您将得到一个对象数组,每个对象看起来像:

{"key":"-LsMm5EeM0DavWwNweBc","adresse":"njkbj","commune":"Marcory","nom":"jjbjkb"}

然后可以像这样迭代:

<ul>
  <li *ngFor="let item of adressArray">
    {{item.adresse}}
  </li>
</ul>

这是带有两个选项的STACKBLITZ:DEMO

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章