gpt4 book ai didi

Angular 2 在 ngOnInit promise 中推送数组后不刷新 View

转载 作者:太空狗 更新时间:2023-10-29 17:02:33 24 4
gpt4 key购买 nike

我创建了一个 Angular 为 2 的 NativeScript 应用程序,我有一组我希望在应用程序前端看到的对象。行为是,如果我将一个对象直接插入 ngOnInit() 内部的数组,它会起作用,但如果我在 ngOnInit() 中创建一个 promise ,它就不起作用。这是代码:

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>

当应用程序启动时,我只看到一次推送,但我创建了一个触发“console.log(JSON.stringify(this.stories))”的按钮;在那一刻,当我点击按钮时,用户界面似乎检测到更改的数组,并且出现另一个被推送的对象。

编辑:

我在此线程中创建了一个更简单的示例:Angular 2: when i change a variable in a promise.than in ngOnInit the view doesn't refresh

最佳答案

变化检测是基于引用的,将元素插入数组不会触发。尝试像这样更新引用:

this.stories.push(story);
this.stories = this.stories.slice();

关于Angular 2 在 ngOnInit promise 中推送数组后不刷新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39196766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com