使用routerLink重新打开父组件后,Angular不应用更改

时间:2018-12-03 04:58:33

标签: angular angular2-routing angular2-services angular2-observables

当我使用[routerLink] =“ [”]“返回到父组件时,我有1个名为“父”的组件和另一个称为“子”(包含在路线中)“子”的组件,先前显示的变量未显示在组件html中。

组件父级中的代码:

categories: ProductCategory[];
ngOnInit ()
{
  meuServico.getProductCategories().subscribe(
    categories 
    =>  {
        this.categories = categories;
        console.log(this.categories);
        ...
        optional setTimeout (for tests)
        ...
    }
  )
}

父组件HTML代码:

<div *ngFor="let category of categories"><br>
    <a>{{ category.name }}</a>   
</div>

子组件HTML代码:

<div class="test-purposes" [routerLink]="['']"</div>;

重要信息: 当我将此代码放在题词的组件中时:

setTimeout (
() => {
    log (categories)
}, 1000);

setTimeout中的console.log的结果是不确定的,但是第一个console.log(setTimeout =实时之外)包含正确的结果。

重要信息: 重新打开子组件中的routerLink之后,HTML和setTimeout中的控制台日志也不会出现,它会重定向到父组件

重要信息: 在重新打开(没有任何routerLink和订阅的第一次呼叫)组件正常工作之前

2 个答案:

答案 0 :(得分:0)

问题与组件和模块中的提供者有关,也与可观察到的有关,我已经解决了

答案 1 :(得分:0)

categories: ProductCategory[];
ngOnInit ()
{
  meuServico.getProductCategories().subscribe(
    categories 
    =>  {
        this.categories = categories;
        console.log(this.categories);
        ...
        optional setTimeout (for tests)
        ...
    }
  )
}