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

时间:2017-03-15 10:29:27

标签: angular routing angular-material2

HY,

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

f.e:

页面加载(有效) - >选择book1(作品) - >选择其他(不工作)

页面加载(有效) - >选择book2(作品) - >选择其他(不工作)

等等。

my example

我错过了什么?

任何其他建议也会非常好。

3 个答案:

答案 0 :(得分:0)

您的组件正在重复使用,因为除了网址中的参数之外没有任何变化

constructor(private http: HttpService,private activatedRoute:ActivatedRoute,private books:Books) {
    this.activatedRoute.params.subscribe((params: any) => {
        const laikID = params['laikID'];

        console.log(laikID);
    });
}

在NaujaiGautiComponent中尝试上述代码,这将控制每次更改路径时记录更改。

祝你好运!

答案 1 :(得分:0)

要使您的示例正常工作,您需要为路由参数更改时设置订阅。

这可以通过以下方式完成:

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 :(得分:0)

我想提供帮助,但您的代码很难遵循 - 我想我的语言障碍。我建议您创建一个只有2个组件的简单项目 - 看看您是否可以在组件之间进行路由。确保您有一个菜单 - 不要手动导航。一旦你开始工作,你可以继续前进,或者你可以重新提出问题