路由仅在页面加载后第一次起作用

route works only first time after page load

嗨,

谁能告诉我为什么我的路由在加载页面后只工作一次?

f.e.:

页面加载(有效)-> select book1(有效)-> select 其他(无效)

页面加载(有效)-> select book2(有效)-> select 其他(无效)

等等

my example

我错过了什么?

任何其他建议也很好。

您的组件正在被重用,因为除了 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 个组件的简单项目 - 看看您是否可以在组件之间进行路由。确保你有一个菜单——不要手动导航。一旦你开始工作,你就可以继续前进,或者你可以重新提出问题