私は、サービス・コンポーネントでnotifyParent =新しい持つEventEmitter()ここではここに私のコードは角度2にデータが到着したときにVIEWを変更するにはどうすればよいですか?
あるimport {Component,Input,Output} from 'angular2/core';
import {PostService} from './post.service';
import {OnInit} from 'angular2/core';
import {Observable} from 'rxjs/Observable';
@Component({
selector: 'postC',
template: `
<div>
{{isLoading}}
</div>
`,
providers: [PostService]
})
export class PostComponent implements OnInit {
@Input() isLoading = true;
@Input() y :any;
@Input() eventsArray;
constructor(private _postService: PostService){}
ngOnInit(){
this._postService.getPost("California");
this.y = this._postService.notifyParent
.subscribe(item => {
this.eventsArray = item.events.event[0];
this.isLoading = false;
console.log(this.isLoading);
})
}
}
、私JSONデータを返す私のコンポーネントからサービスを呼び出しています。データを受け取ったときにイベントを送出します。
問題は次のとおりです。
1)isLoadingは常にtrueを示しています。 observablesがその値をfalseに更新した後も。
2)返されるJSONデータを表示できません。データを受け取る前にビューがレンダリングされているためです。
イベントエミッタを使用していて、http要求ではない理由があります。私は学校のプロジェクトのためにこのアプリケーションを構築していますが、CORSの問題のためにhttpリクエストを行うことができないlocalhost上で実行する必要があります。
'getPost()'はデータを返すものではありませんか?もし 'subscribe'がそこにあるべきでないならば? –
これは関数getPost() を呼び出すだけです。この関数は、notifyParentイベントエミッターを介してデータを送信するコールバック関数を持っています。 –
それはデータを返しますか?だからあなたは 'console.log(this.eventsArray)'のところにデータがありますか? –