为什么" [隐藏]"工作,但" * ngIf"不适用于Angular2中的ngOnInit()?

时间:2017-03-15 20:48:25

标签: angular angular2-routing

对于下面的代码,我使用hidden,当我在这两个路由之间路由时,它叫做ngOnInit()。但是,当我使用" * ngif"时,从未调用过ngOnInit()。我想知道为什么会这样。另外,我想" * ngif"如果有可能,因为" [隐藏]"可以与CSS冲突。

<div class="container">
                <div [hidden]="!(router.url == '/info/userinfo')">
                  <div class="catalog" >
                    <button [routerLink]="['/info/userinfo']"><h2>userinfo</h2></button>
                </div>
                <div [hidden]="!(router.url == '/info/question')">
                  <div class="catalog">
                    <button [routerLink]="['/info/question']"><h2>question</h2></button>
                  </div>
                </div>
     </div>

userinfo和question是两个组件和info的子项。 我猜它有与路线有关的东西,因为如果我从&#39; / home&#39;转到&#39; / info / question&#39;,将调用ngOnInit()。但是,如果我从&#39; / info / userinfo&#39;到&#39; / info / question&#39;,两个ngOnInit()都不会被调用。

1 个答案:

答案 0 :(得分:2)

因为* ngIf在计算结果为false时不会创建您的组件,但隐藏只隐藏组件但仍然创建它。