3

私はまだng2を学びたいと思っています。これは一般的な問題ですが、オンラインで見つけた解決策はありません。誰でも私の問題は何か知っていますか?角2:httpサービスアップデート後にテンプレートが更新されない

私は私のテンプレートだけでJSON形式のイベントは可変出力しようと、私は

ngOnInit(){ 
    this.eventService.getEventList() 
     .subscribe(events => { 
      this.zone.run(()=>{ 
       this.events = events; 
       console.log(this.events) 
      }); 
     }); 
} 

私のコンポーネントでそれを購読する観測可能

getEventList(): Observable<any>{ 
    return this.http.get('./assets/data.json') 
     .map(response => response.json()); 
} 

としてgetEventList()メソッドを使用してサービスを持っています

<p> 
    {{ 
     events | json 
    }} 
</p> 

ご覧のとおり、私はイベントの値をローカルvに割り当てていますzone.run()コールバックで可まだテンプレートの更新が表示されません。私もApplicationRef.tickとChangeDetectorRef.detectChanges()を試しましたが、どちらも私の変更を検出していないようです。

Console.logコールは、データが更新されたことを確認します。このコンポーネントで発生したクリックハンドラも、ビューを更新するようです。

ここで間違っていることは誰でも知っていますか?いくつかのアドバイスを得るのに十分なコードを投稿しましたか?他に何を見たいのか教えてください。

+1

あなたのHTMLを投稿してください。 –

+0

かなり小さい@StefanSvrkotaしかしそこに行く。ありがとう! –

答えて

0

シードがOnPushにChangeDetectionStrategyを設定しました。これをデフォルトに設定すると私の問題は解決しました。

0

これはgetEventList()メソッドを呼び出す前に、あなたはthis.eventsに値を割り当てていないと仮定すると、それを実行する必要があります。

<div *ngIf="events"> 
{{ events | json }} 
</div> 
+0

ありがとう!私はそれを値として空の配列に割り当てていましたが、あなたの提案が役に立たなかったとしても。 –

+0

'this.zone.run'を使わずにコードをテストしただけで、魅力的に機能します。このような: 'ngOnInit(){ this.eventService.getEventList() .subscribe(イベント=> { this.eventsの=イベント; にconsole.log(this.events) })。 } ' –

+0

これはthis.zone.runでも動作します。私はそれを試しました。あなたの終わりに何が原因なのか分からない。プランナーにコードを複製して、ここに投稿してください。 –

関連する問題