【发布时间】:2019-10-14 07:22:40
【问题描述】:
我正在使用 Angular 6,并且我有以下组件
在 ngOnInit 上有此代码的 MainComponent.ts:
ngOnInit() {
console.log('OnInit');
this.route.params.subscribe(params => {
if (params['id'] != null) {
this.id= params['id']
}
});
}
然后是 MainComponent.HTML
<DataComponent [id]="id"></DataComponent>
<TableComponent [id]="id"></TableComponent>
<FieldComponent [id]="id"></FieldComponent>
路线是:http://localhost:4200/Data/77
在我需要克隆或更改 ID 之前一切正常,所以我需要 MainComponent 刷新所有 ID。 我做了以下代码:
this.router.navigate(['/Data', result.id_cloned_data]);
编辑: 路线
const appRoutes: Routes = [
{
path: 'Formula/:idFormula',
component: FormulaMainComponent,
pathMatch: 'full'
},
{ path: 'Formula', component: FormulaMainComponent, pathMatch: 'full' },
{ path: '', component: FormulaMainComponent, pathMatch: 'full' }
];
URL 更改为,例如:http://localhost:4200/Data/399,但 MainComponent 不刷新。 我做了一个 EventEmitter 将新 ID 传递给 MainComponent,但它仍然无法正常工作,我已经尝试过 AppRoutes onSameUrlNavigation: 'reload'。
我做错了什么?不是要重新加载,所以每个组件都从 API 调用它的 Get 吗?
【问题讨论】:
-
如果将 console.log(this.id) 放入 subscribe() 会发生什么?
-
@MaciejWójcik 它刷新 .TS 中的变量,但不刷新 HTML
-
是的,因为路由器只创建了一次参数。可能更好的选择使用
这个组件。并检查孩子级别的身份证?记住 的级别和参数 'id' -
我尝试在所有子组件上调用 subscribe Params 并且它可以工作,但我想它不是一个“好代码”,我认为我在使用提供 ID 的主要组件做正确的事情到子组件并自行重新加载,但它并没有像我想象的那样工作
标签: angular angular-ui-router angular6