我有一个非常简单的 Angular 4+ 应用程序,它从 API 获取数据并显示数据。我相信这应该可以通过仅使用根组件来实现:{path: 'main', component: MainComponent}
和 QueryParams 之类的?id=1
.
我能够获取查询参数,但由于某种原因,我的路由器在已经存在的 route+params 部分之后重复了 URL 的 route+params 部分。例如,我的本地地址从localhost:4200/main?id=1
into不正确localhost:4200/main?id=1/main?id=1
。
ActivatedRoute 确实从 URL 中选择了正确的查询参数,但我希望尽可能地清理 URL。如何防止这种重复发生?我<base href='/'>
在 index.html 中根据路由要求进行了设置。
模块:
@NgModule({
imports: [
BrowserModule,
RouterModule,
RouterModule.forRoot(
[
{ path: 'main', component: MainComponent},
]),
CommonModule,
HttpModule,
FormsModule,
NgbModule.forRoot()
],
declarations: [MainComponent],
providers: [
{provide: APP_BASE_HREF, useValue: window.document.location.href},
DataService,
WindowService,
HttpUtil
],
bootstrap: [MainComponent]
})
export class MainModule{}
零件:
@Component({
selector: 'main-component',
templateUrl: './main.component.html',
styleUrls: ['./main.component.css']
})
export class MainComponent implements OnInit {
constructor(private dataService: DataService,
private activatedRoute: ActivatedRoute) {
}
ngOnInit() {
this.activatedRoute.queryParams.subscribe((params: Params) => {
if (!(Object.keys(params).length === 0 && params.constructor === Object)) {
console.log(params);
}
});
}
}