Angular2 ngFor:何时添加/删除DOM?如何强制它重新创建DOM?
我正在玩Angular2*ngFor,对它何时重新创建DOM有点困惑 如果我在Angular2 ngFor:何时添加/删除DOM?如何强制它重新创建DOM?,angular,ngfor,Angular,Ngfor,我正在玩Angular2*ngFor,对它何时重新创建DOM有点困惑 如果我在onClick()中只有case1代码,那么它将重新创建两个,但我只是将相同的值赋给this.objArr 如果在onClick()中只有case2代码,那么它不会重新创建两个,只需再添加一个。我想知道ngFor如何确定何时重新创建DOM 我想做的是: 如果我只是将更多对象推送到现有数组中,除了为推送的对象添加DOM外,我如何让它为我重新创建现有DOM?与案例2一样,我希望ngFor可以为我重新创建前两个 Html:
onClick()
中只有case1代码,那么它将重新创建两个
,但我只是将相同的值赋给this.objArr
如果在onClick()
中只有case2代码,那么它不会重新创建两个,只需再添加一个
。我想知道ngFor如何确定何时重新创建DOM
我想做的是:
如果我只是将更多对象推送到现有数组中,除了为推送的对象添加DOM外,我如何让它为我重新创建现有DOM?与案例2一样,我希望ngFor可以为我重新创建前两个
Html:
.ts文件:
constructor(){
this.objArr=[
{
“id”:0,
“内容”:“test0”
},
{
“id”:1,
“内容”:“test1”
}
];
}
onClick(){
//案例1:重新创建两个
this.objArr=[
{
“id”:0,
“内容”:“test0”
},
{
“id”:1,
“内容”:“test1”
}
];
//案例2:只需在现有的两个 之后添加一个
这是推({
“id”:“2”,
“内容”:“test2”
});
}
您可以临时将objArr
设置为null,并通过调用detectChanges来“强制”Angular来更新DOM,方法是:
构造函数(私有cdRef:ChangeDetectorRef){}
onClick(){
var tmp=this.objArr;
this.objArr=null;
this.cdRef.detectChanges();
this.objArr=tmp;
this.cdRef.detectChanges();
}
您可以将管道用于that@VinayPandya你能根据我的例子解释更多细节吗?谢谢。this.objArr=null
和this.objArr=[]代码>?Willthis.objArr=[]代码>只保留原始引用?更改objArr
的值并运行更改检测强制*ngFor
删除所有项目,并将它们添加回,使*ngFor
重新添加它们。我明白了。谢谢你的帮助。你不能使用OnPush策略,然后使用cdRef.markForChange()
?我想是的,但是问题中没有提到OnPush
。