2017-03-20 9 views
0

角度、私はdisputasと呼ばれるオブジェクト内のプロパティにアクセスしようとしているが、私はこのメッセージを取得しています:[TS]プロパティ「campanhaは、」タイプ「DisputaComponent []」に存在しません - 2

をプロパティ「campanha」タイプに存在しません「DisputaComponentは[]」

は、私はそのはdisputasの配列を返すので、それはだと思うので、どのように私は内の各オブジェクトdisputaにアクセスすることができ、disputas内の任意のプロパティにアクセスすることはできませんこの配列?

私は何をしようとしていることはページの同じIDを持つオブジェクトのみを表示し、ここでスニペットコードがありますされています。あなたたちはそれを必要とする場合

constructor(service: DisputaService, private route:ActivatedRoute, 
private router:Router, private campanha_service:FiltroNegociacaoService){ 
    service 
    .lista() 
    .subscribe(disputas => { 
    if (this.disputas.campanha.cliente_id == this.campanha.cliente_id) // this is where I get the message 
     this.disputas = disputas; 
    console.log("Disputas: ", disputas); 
    console.log("Campanha: ", this.campanha); 
    }, erro => console.log("erro")) 
} 

、ここでは完全なコードは次のとおりです。

import { Component, OnInit } from '@angular/core'; 
import {DisputaService} from '../services/disputas.service'; 
import {FiltroNegociacaoComponent} from '../../../filtra-negociacao/components/filtra-negociacao.component'; 
import {FiltroNegociacaoService} from '../../../filtra-negociacao/services/filtro-negociacao.service'; 
import {ActivatedRoute, Routes, RouterModule, Router} from '@angular/router'; 

@Component({ 
    moduleId: module.id, 
    selector: 'disputas', 
    templateUrl: `disputas.component.html`, 
    providers: [DisputaService, FiltroNegociacaoService] 
}) 

export class DisputaComponent implements OnInit { 
    public disputas:DisputaComponent[] = []; 
    public loading = false; 
    campanhas: FiltroNegociacaoComponent; 
    campanha:any; 
    service: DisputaService; 
    name: string; 
    proposta_inicial:number; 
    propostas_realizadas:number = 0; 
    maximo_propostas:number; 
    status = { 
     status_nome: "" 
    } 
    id:number; 

    constructor(service: DisputaService, private route:ActivatedRoute, 
    private router:Router, private campanha_service:FiltroNegociacaoService){ 
     service 
     .lista() 
     .subscribe(disputas => { 
     if (this.disputas.campanha.cliente_id == this.campanha.cliente_id) 
     this.disputas = disputas; 
     console.log("Disputas: ", disputas); 
     console.log("Campanha: ", this.campanha); 
     }, erro => console.log("erro")) 
    } 

    ngOnInit():void{ 
     this.route.params.subscribe(params =>{ 
     let id = params['id']; 
     this.campanha_service 
     .buscaPorId(id) 
     .subscribe(campanha => { 
      this.campanha = campanha; 
     }, 
     erro => console.log(erro)); 
     }) 
    } 

事前に感謝:)

答えて

1

あなたはdisputasの配列を取得し、this.campanhaに1と同じcliente_idを持つものを見つけようとしています。配列そのものにはこのプロパティがありません。配列をフィルタリングして結果を設定する必要があります。

.subscribe((disputas: DisputaComponent[]) => { 
    this.disputas = disputas.filter(
     disputa => disputa.campanha.client_id === this.campanha.cliente_id 
    ); 
} 
+0

ありがとうございます。メッセージは削除されますが、それでもフィルタは使用できません。どのようなIDを持っていても、すべての「争い」オブジェクトを返すことができます。何が起こっているのか知っていますか? –

+0

このために特別なフィルタを作成する必要がありますか? –

+0

@RenêSilvaLimaいいえ、そのまま動作するはずです。あなたは紛争の復帰をどこで確認していますか? – PierreDuc

関連する問題