0

J'essaie de filtrer un BehaviorSubject dans Angular 2. L'objet commissions dans le service recevra des données via une requête http. Mais parce qu'il est instancié avec "null" il y a une erreur sur la ligne de code du filtre.angular 2 filter BehaviorSubject

L'erreur:

Cannot read property '0' of null

à .filter((commission: Commission[], index) => commission[index]._id === this.commissionid)

Voici ist le code:

commissionService:

public commissions: Subject<Commission[]> = new BehaviorSubject<Commission[]>(null); 

dans le composant:

ngOnInit() { 
    this.commissionService.commissions 
     .filter((commission: Commission[], index) => commission[index]._id === this.commissionid) 
     .subscribe(data => {console.log(data); }) 
    } 

Est-il possible à tous que ce filtre fonctionnera si je change le this.commissionid? Merci!

+0

'Observable # filter' ne prend pas un paramètre' index'. Je suppose que vous voulez 'commissions.map (commissions.filter (...))'. –

+0

@torazaburo En fait, il prend un index comme deuxième paramètre. http://reactivex.io/documentation/operators/filter.html – Hinrich

+0

merci beaucoup pour vos réponses mais je suis désolé, j'avais tort, j'ai un problème avec this.commissionid est indéfini, je dois vérifier cela – miholzi

Répondre

0

maintenant je trouve une solution, merci pour vous aider, voici le code complet:

ngOnInit() { 
    this.route.params.subscribe((params: Params) => { 
     this.commissionid = params.commissionid; 
     if (this.commissionid) { this.init_obj(this.commissionid); } 
    }); 

    } 


    init_obj(id) { 
    this.commissionService.commissions 
     .map(function(data) { 
      if (data) { return data.find(commission => commission._id === id); } 
     }) 
     .subscribe(data => { 
      if (data) { this.commission = data; } 
     }) 

    } 
+1

Maintenant Je vois ce que vous essayez de faire. Dans ce cas, il vaut mieux utiliser l'opérateur 'first' de rxjs. http://reactivex.io/documentation/operators/first.html Je vais mettre à jour ma réponse. – Hinrich