首页 > 解决方案 > ERROR Cannot read property 'name' of undefined using .subscribe

问题描述

I'm just getting this error -

ERROR TypeError: Cannot read property 'name' of undefined

all the time!

This is my code from getclients.service.ts:

import { Injectable } from '@angular/core';
import {AngularFireDatabase, AngularFireList} from 'angularfire2/database';

import * as _ from 'lodash';

@Injectable({
providedIn: 'root'
})
export class GetclientsService {
  getclientList: AngularFireList<any>;
  array= [];

  constructor(private firebase: AngularFireDatabase) {
    this.getclientList=this.firebase.list('clients');
    this.getclientList.snapshotChanges().subscribe(list=>{
    this.array=list.map(item=>{
      return{
        $key: item.key,
        ...item.payload.val()
        };
    });
  });
 }
 getClientName($key){
   if ($key=="0")
     return "";
   else{
     return _.find(this.array, (obj)=>{return obj.$key==$key;})['name'];
    }
 }

}

And this is my employeelist.component.ts:

 this.service.getEmployees().subscribe(
list=>{
  let array = list.map(item=>{
    let maintainerName=this.maintainerService.getMaintainerName(item.payload.val()['maintainer']);
    let clientName=this.getclientsService.getClientName(item.payload.val()['client']);
    return{
      $key: item.key,
      maintainerName,
      clientName,
      ...item.payload.val()
    };
  });
  this.listData= new MatTableDataSource(array);
  this.listData.sort=this.sort;
  this.listData.paginator=this.paginator;
  this.listData.filterPredicate=(data, filter)=>{
    return this.displayColumns.some(ele=>{
      return ele != 'actions' && data[ele].toLowerCase().indexOf(filter) != -1;
    });
  }
}

I'm tryinig to get maintainers list from firebase in the same way and it works!

标签: angularfirebase

解决方案


推荐阅读