2016-08-28 3 views
1

ページを更新するためにNg2を取得できません。 私はCRUDシステムを持っているので、新しいエントリーを入力するときにページが更新されるのがうまくいけばいいです。この理由は、テーブルが{{ studentAssign.assID[0]._id }} のようなコードエントリを使用して作成されているためですが、assIDの新しいエントリをサブミットすると、配列がstudentAssign._idとして結合されて空白のエントリが作成され、関数。Angular2リフレッシュページ

は機能

submitCreate(studentAssign) { 
     this.authHttp.post("/api/student-assignment/", JSON.stringify(studentAssign), this.options).subscribe(
      res => { 
       this.studentAssigns.push(studentAssign); // the response contains the new item 
       this.sendInfoMsg("item added successfully.", "success"); 
       // workaround to reset the form values 
       this.workaround = false; 
       setTimeout(() => this.workaround = true, 0); 
      }, 
      err => console.log(err) 
     ); 
    } 

を作成マイIは、ページの更新を強制するために、多くの事を試してみました。私。 this.router.renavigate();this.router.navigate(['/Student-Assign']);this.zone.run(() => {}); ... NgZoneのゾーン(コンポーネントの再レンダリング)は動作していません。

紛失しているものがありますか?または、ページをリフレッシュするのを避ける代わりに、 'assID'配列を作成するのは簡単ですか?

編集ngForコード私はマングースからそれを投入していてそれを配列にしてい

<tr *ngFor="let studentAssign of studentAssigns"> 
        <td style="text-align:center;"><div tooltip="{{studentAssign.assID[0].assignName}}" tooltipPlacement="top" tooltipTrigger="mouseenter">{{ studentAssign.assID[0]._id }}</div></td> 
        <td style="text-align:center;"><div tooltip="Email: {{studentAssign.studentID[0].email}} Name: {{studentAssign.studentID[0].firstName}} {{studentAssign.studentID[0].lastName}}" tooltipPlacement="top" tooltipTrigger="mouseenter">{{ studentAssign.studentID[0]._id }}</div></td> 
        <td style="text-align: center;"> 
         <button type="button" class="btn btn-warning btn-sm" (click)="toggleEdit(studentAssign)"><i class="fa fa-pencil"></i> Edit</button> 
         <button type="button" class="btn btn-danger btn-sm" (click)="submitRemove(studentAssign)"><i class="fa fa-trash"></i> Delete</button> 
        </td> 
       </tr> 

、生のJSON:

{ "_id":3、 "__ V":0 、 "studentID":[{"_ id": "1240681"、 "メール": "[email protected]"、 "lastName": "Groves"、 "firstName": "Jakey"、 "__ v":0}] 、 "assID":[{"_ id": "As 1"、 "assignName": "Cwk"、 "__ v":1、 "modInsID":[13]}]}

+0

なぜ動作しないのかわかりません。 Angular2の変更検出では、配列やオブジェクトの内容が変更されているかどうかはチェックされません。 '* ngFor'自体が配列内容の変更をチェックし、バインディングがある場合、Angular CDは変更があればこれらのバインディングをチェックします。したがって、必要や回避策やハックがあってはいけません。ブラウザのコンソールに何かエラーがありますか? –

+0

次の返信明日は。ベッドの時間:O –

+0

@GünterZöchbauerあなたの返信に感謝します...そしてコンソールにエラーはありません。そして、私はこのコードを '{{studentAssigns.length? studentAssigns.length:0}} '配列の量を増やすと、新しいエンティティを追加すると、それを' studentAssign.assID [0] ._id'として保存せず、それを 'studentAssign 'として保存します。 _id'は私が望むものではありませんが、 'studentAssign.assID [0] ._id'として保存するか、ページがリフレッシュされて配列が生成されるようにする必要があります。とにかく返信ありがとう:) –

答えて

0

あなたは

res => { 
    this.studentAssigns.push(studentAssign); 
    this.studentAssigns = this.studentAssigns.slice(); 
} 

を試すことができます私はより良い提案を(あなたは、配列をバインドする*ngForを使用しない)より多くのコードを参照する必要があります。

+0

あなたのすばやい返信をありがとう、私はメインポストであなたのための余分なコードと生のJSON形式を追加しました。それは、配列を持つmongoDBから得られます。 –

関連する問題