执行操作后导航到同一页面
Navigating to same page after performing a operation
在 Angular8 中,我有一个页面列出了一些信息,从当前页面删除行后有删除选项,我需要刷新当前页面以便更新内容。我为此使用了导航,但由于同一页面导航问题,它无法正常工作
下面是我删除记录的代码
deleteBusiness(id) {
this.bs.deleteBusiness(id).subscribe(
res =>{console.log(res)},
error=>console.log(error.message),
()=>{this.router.navigate(['business'])}
);
}
我在定义的死记硬背中使用了 onSameUrlNavigation
,但它不起作用。
请让我知道这里遗漏了什么
下面是我的路线配置
const routes: Routes = [
{
path: 'business/create',
component: GstAddComponent
},
{
path: 'business/edit/:id',
component: GstEditComponent
},
{
path: 'business',
component: GstGetComponent,
runGuardsAndResolvers: 'always'
},
{
path: '',
redirectTo: "/business",
pathMatch :"full"
},
];
我使用下面的链接来解决这个问题
Angular 6 router link issue in the same page
但没有成功。请提出解决此问题的方法
您不必为了刷新数据而重新加载页面。自 AJAX 发明以来就没有了!
当删除承诺解决时调用加载数据的函数。
deleteBusiness(id) {
this.bs.deleteBusiness(id).subscribe(()=>{
this.loadData();
});
}
window.location.reload();
这会重新加载整个页面,但最好不要只是为了更新值而这样做,您可以通过拼接 array.splice(index_value,1);
从数组中删除该值,或者只需调用 api 保存结果。
deleteBusiness(id) {
this.bs.deleteBusiness(id).subscribe( (err,res) => {
if(err){ /* Do Something */ }
else{
/* Here call the function which fetch this list like */
this.functionName();
}
});
}
i need to refresh current page so that content may updated
我认为为删除更新数据可能不太理想。
我会从数组正在构建的任何内容中删除已删除的数据,我假设在 *ngFor
中。让我们假设这称为业务并且是一个数组。
public business = []; // holds youd business objects.
public deleteBusiness(id): void
{
this.bs.deleteBusiness(id).subscribe(res =>
{
const toRemove = this.business.findIndex(data => data.id = id);
if (toRemove !== -1)
{
this.business.splice(toRemove, 1);
}
},
error =>
{
console.log(error.message),
}
);
}
这将确保视图与已删除的项目保持同步,然后当页面最终刷新时,将不会再次加载已删除的数据。如果有任何问题,请发表评论。
router.navigate()函数只在URL发生变化时调用,你需要做的是获取响应,如果响应成功则触发getAll调用。
// 假设你有一个获取所有数据的函数。
deleteBusiness(id) {
this.bs.deleteBusiness(id).subscribe(
res =>{this.getAll()},
error=>console.log(error.message),
()=>{this.router.navigate(['business'])}
);
}
// 如果不存在则定义 getAll()
在 Angular8 中,我有一个页面列出了一些信息,从当前页面删除行后有删除选项,我需要刷新当前页面以便更新内容。我为此使用了导航,但由于同一页面导航问题,它无法正常工作
下面是我删除记录的代码
deleteBusiness(id) {
this.bs.deleteBusiness(id).subscribe(
res =>{console.log(res)},
error=>console.log(error.message),
()=>{this.router.navigate(['business'])}
);
}
我在定义的死记硬背中使用了 onSameUrlNavigation
,但它不起作用。
请让我知道这里遗漏了什么
下面是我的路线配置
const routes: Routes = [
{
path: 'business/create',
component: GstAddComponent
},
{
path: 'business/edit/:id',
component: GstEditComponent
},
{
path: 'business',
component: GstGetComponent,
runGuardsAndResolvers: 'always'
},
{
path: '',
redirectTo: "/business",
pathMatch :"full"
},
];
我使用下面的链接来解决这个问题
Angular 6 router link issue in the same page
但没有成功。请提出解决此问题的方法
您不必为了刷新数据而重新加载页面。自 AJAX 发明以来就没有了! 当删除承诺解决时调用加载数据的函数。
deleteBusiness(id) {
this.bs.deleteBusiness(id).subscribe(()=>{
this.loadData();
});
}
window.location.reload();
这会重新加载整个页面,但最好不要只是为了更新值而这样做,您可以通过拼接 array.splice(index_value,1);
从数组中删除该值,或者只需调用 api 保存结果。
deleteBusiness(id) {
this.bs.deleteBusiness(id).subscribe( (err,res) => {
if(err){ /* Do Something */ }
else{
/* Here call the function which fetch this list like */
this.functionName();
}
});
}
i need to refresh current page so that content may updated
我认为为删除更新数据可能不太理想。
我会从数组正在构建的任何内容中删除已删除的数据,我假设在 *ngFor
中。让我们假设这称为业务并且是一个数组。
public business = []; // holds youd business objects.
public deleteBusiness(id): void
{
this.bs.deleteBusiness(id).subscribe(res =>
{
const toRemove = this.business.findIndex(data => data.id = id);
if (toRemove !== -1)
{
this.business.splice(toRemove, 1);
}
},
error =>
{
console.log(error.message),
}
);
}
这将确保视图与已删除的项目保持同步,然后当页面最终刷新时,将不会再次加载已删除的数据。如果有任何问题,请发表评论。
router.navigate()函数只在URL发生变化时调用,你需要做的是获取响应,如果响应成功则触发getAll调用。
// 假设你有一个获取所有数据的函数。
deleteBusiness(id) {
this.bs.deleteBusiness(id).subscribe(
res =>{this.getAll()},
error=>console.log(error.message),
()=>{this.router.navigate(['business'])}
);
}
// 如果不存在则定义 getAll()