2016-12-09 3 views
1

このエラーは、どのようにして私がreturnデータと関係があるかを判断できます。しかし私はどこで私のリターンステートメントが不足しているか、それはまったく問題ではないことがわかりません...私のフロントエンドから何かを削除するとエラーが発生しますここで私の削除機能と私のエラーのコードです取り扱い:角2未定義の 'Symbol(Symbol.iterator)'プロパティを読み取ることができません

コンポーネント

delete(id){ 
     console.log(id); 
     this._dataservice.Delete(id) 
     .subscribe((res) => { 
      this.myPosts = res; 
     }); 
      var index = this.myPosts.findIndex(x => x.id == id); 
      this.myPosts.splice(index, 1); 
    } 

サービス

public Delete = (id: string) =>{ 
     return this._http.delete(this.actionUrl + id) 
      .map(res => res.json()) 
      .catch(this.handleError); 
    }  

    private handleError(error: any) { 
     if(error != null && error.headers != null){ 
     var applicationError = error.headers.get('Application-Error'); 
     var serverError = error.json(); 
     var modelStateErrors: string = ''; 

     if (!serverError.type) { 
      console.log(serverError); 
      for (var key in serverError) { 
       if (serverError[key]) 
        modelStateErrors += serverError[key] + '\n'; 
      } 
     } 

      modelStateErrors = modelStateErrors = '' ? null : modelStateErrors; 

      return Observable.throw(applicationError || modelStateErrors || 'Server error'); 
     } 
    } 

私は他のSOこの同じ問題との質問が、のどれを見ていました私の問題を解決するのに役立つようでした。助けてくれてありがとう。

もここでエラー enter image description here

EDITの画像である

また、それは、このエラーは、実際に私のアプリを壊していないことは注目に値します。それでも削除したいアイテムは削除されます。すべての機能は有効ですが、このエラーはスローされます。

+0

これらの質問のいずれかが役に立ちますか? http://stackoverflow.com/questions/37414855/typeerror-cannot-read-property-symbolsymbol-iterator-of-undefined?rq=1 http://stackoverflow.com/questions/37414855/typeerror-cannotread-プロパティシンボルの反復子の定義されていない?rq = 1 http://stackoverflow.com/questions/36295535/angular2-typeerror-cannot-read-property-symbolsymbol-iterator-of-undefined?rq=1 – vinagreti

+0

私は見ました彼らは投稿する前に、しかし、彼らは役に立たなかった。私は私のコードのどこに別のreturn文が必要か、どこで私の配列をリセットしなければならないのかわかりません。 – Bean0341

+0

あなたが望むようにアイテムが削除されているので、私はあなたのエラーがあなたの配列をリセットしないことを指摘します。イテレータが、もはや存在しない項目、または範囲外のインデックスを読み込もうとしているようです。あなたの配列をどこでリセットするのかは分かりませんが、正しい方向に進むことができます。お役に立てれば。 – Drew13

答えて

-1

まず、this._dataservice.Delete()呼び出しの外では、myPosts配列から項目を削除しないでください。この呼び出しが完了する前に、あなたの休憩サービスによって投稿が実際に削除されたかどうかはわかりませんが、実際の削除結果を知った瞬間にクライアントで既に削除されています。これは、 。それは信頼できないロジックです。

今、主なポイントです。アプリケーションで実際のデータ交換が見られないため(そしてアプリケーションのほとんども同様)、できることは推測することです。私の推測では、コードのこの部分に何か問題があるのである。

this._dataservice.Delete(id) 
    .subscribe((res) => { 
     this.myPosts = res; 
    }); 

特に私が呼び出す前にhttp.delete()マップ()の呼び出しであなたのサービスでは、以前にもresパラメータまたはとしてあなたに返されるかどうか確認したいです。それにjson()があります。私はそれが間違った価値などを受け取っていると思う。

これはあなたにいくつかのアイデアを提供しますが、もう一度 - あなたのアプリケーションが何も見ていないことを伝えるのは本当に難しいです。コールスタックから何が正確に失敗しているのかは明らかではありませんが、角度/ゾーン/ rxjsソースでこのようなものを見つけることはできませんでした。

関連する問題