路由仅在页面加载后第一次起作用
route works only first time after page load
嗨,
谁能告诉我为什么我的路由在加载页面后只工作一次?
f.e.:
页面加载(有效)-> select book1(有效)-> select 其他(无效)
或
页面加载(有效)-> select book2(有效)-> select 其他(无效)
等等
我错过了什么?
任何其他建议也很好。
您的组件正在被重用,因为除了 url
中的参数外没有任何变化
constructor(private http: HttpService,private activatedRoute:ActivatedRoute,private books:Books) {
this.activatedRoute.params.subscribe((params: any) => {
const laikID = params['laikID'];
console.log(laikID);
});
}
在您的 NaujaiGautiComponent 中尝试上面的代码,这将在您每次更改路由时控制台记录更改。
祝你好运!
为了使您的示例正常工作,您需要设置一个订阅,以便在路由参数发生变化时进行订阅。
这可以通过以下方式完成:
ngOnInit(): void {
this.activatedRoute.params.subscribe((parms: any) => {
if (parms.laikID) {
this.atsakymas = this.books.getBook(parms.laikID);
this.ats = JSON.stringify(this.atsakymas);
}
});
}
这将适用于您的示例。但是,您可能应该考虑使用数据绑定而不是订阅路由参数。
我很想帮忙,但你的代码很难理解 - 我想我有语言障碍。我建议您创建一个只有 2 个组件的简单项目 - 看看您是否可以在组件之间进行路由。确保你有一个菜单——不要手动导航。一旦你开始工作,你就可以继续前进,或者你可以重新提出问题
嗨,
谁能告诉我为什么我的路由在加载页面后只工作一次?
f.e.:
页面加载(有效)-> select book1(有效)-> select 其他(无效)
或
页面加载(有效)-> select book2(有效)-> select 其他(无效)
等等
我错过了什么?
任何其他建议也很好。
您的组件正在被重用,因为除了 url
中的参数外没有任何变化constructor(private http: HttpService,private activatedRoute:ActivatedRoute,private books:Books) {
this.activatedRoute.params.subscribe((params: any) => {
const laikID = params['laikID'];
console.log(laikID);
});
}
在您的 NaujaiGautiComponent 中尝试上面的代码,这将在您每次更改路由时控制台记录更改。
祝你好运!
为了使您的示例正常工作,您需要设置一个订阅,以便在路由参数发生变化时进行订阅。
这可以通过以下方式完成:
ngOnInit(): void {
this.activatedRoute.params.subscribe((parms: any) => {
if (parms.laikID) {
this.atsakymas = this.books.getBook(parms.laikID);
this.ats = JSON.stringify(this.atsakymas);
}
});
}
这将适用于您的示例。但是,您可能应该考虑使用数据绑定而不是订阅路由参数。
我很想帮忙,但你的代码很难理解 - 我想我有语言障碍。我建议您创建一个只有 2 个组件的简单项目 - 看看您是否可以在组件之间进行路由。确保你有一个菜单——不要手动导航。一旦你开始工作,你就可以继续前进,或者你可以重新提出问题