angular 2でNativeScriptアプリを作成しました。アプリケーションのフロントエンドに表示されると予想されるオブジェクトの配列があります。動作は、オブジェクトを ngOnInit() 内の配列に直接プッシュすると機能しますが、ngOnInit() でプロミスを作成すると機能しません。コードは次のとおりです。
export class DashboardComponent {
stories: Story[] = [];
pushArray() {
let story:Story = new Story(1,1,"ASD", "pushed");
this.stories.push(story);
}
ngOnInit() {
this.pushArray(); //this is shown
var promise = new Promise((resolve)=>{
resolve(42);
console.log("promise hit");
});
promise.then(x=> {
this.pushArray(); //this is NOT shown
});
}
}
相対htmlは次のとおりです。
<Label *ngFor="let story of stories" [text]='story.message'></Label>
アプリの起動時にプッシュが 1 回しか表示されませんが、「console.log(JSON.stringify(this.stories));」をトリガーするボタンを作成しました。その瞬間、ボタンをタップすると、UI が変更された配列を検出したようで、他のプッシュされたオブジェクトが表示されます。
編集:
このスレッドでより単純な例を作成しました: Angular 2: when i change a variable in a promise.than in ngOnInit the view doesn't refresh