今までfirebaseを使ってリアルタイムで更新されたデータが表示されるようにしていたのですが、firebaseをやめて自作APIから取得するようにしようと考えています。
しかしそうなると毎回ブラウザのリロードを行わないと更新されたデータが表示されないです。
そこで定期的にAPIからデータを取得するメソッドを呼び出そうと思うのですが、定期的な処理を行う際に役立つAngularの機能やメソッドなどはあるのでしょうか?
ngOnInit() { setInterval(this.getComments, 1000); }
とりあえず上記のようにsetInterval()を利用して定期的に呼び出す方法を思いついたのでやってみたのですが、以下のエラーが表示されてしまい全くデータが入ってこない状況です。
core.js:1542 ERROR TypeError: Cannot read property 'get' of undefined at push../src/app/timeline/chat/chat.component.ts.ChatComponent.getComments (chat.component.ts:83) at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421) at Object.onInvokeTask (core.js:3662) at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420) at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188) at push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask (zone.js:496) at ZoneTask.invoke (zone.js:485) at timer (zone.js:2054)
エラーが出る原因となっているコードは恐らく以下だと思われるのですがなぜうまくいってないのか分からないです、、
ちなみにconsole.log()でthis.commentsServiceを出力してみるとundefinedが表示されました。
setIntervalをやめてthis.getComments()とすると一回だけ動作し、データも問題なく表示されます。
getComments() { this.commentsService.get().subscribe(responses => { }); }
get(): Observable<any> { return this.http.get<Comment[]>(API_SERVER + 'comments'); }
上記問題の解決、もしくは別の定期処理を行う方法があればご教示頂けないでしょうか。よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/01 17:49