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

为什么;[隐藏]”;工作,但是*ngIf“;不适用于Angular2中的ngOnInit()?,angular,angular2-routing,Angular,Angular2 Routing,对于下面的代码,我使用了hidden,当我在这两条路由之间路由时,它被称为ngOnInit()。然而,当我使用“*ngif”时,从未调用过ngOnInit()。我想知道为什么会这样。另外,如果可能的话,我想使用“*ngif”,因为“[hidden]”可能与CSS冲突 <div class="container"> <div [hidden]="!(router.url == '/info/userinfo')">

对于下面的代码,我使用了hidden,当我在这两条路由之间路由时,它被称为ngOnInit()。然而,当我使用“*ngif”时,从未调用过ngOnInit()。我想知道为什么会这样。另外,如果可能的话,我想使用“*ngif”,因为“[hidden]”可能与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是信息的两个组件和子级。
我想它与路径有关,因为如果我从“/home”转到“/info/question”,将调用ngOnInit()。但是,如果我从“/info/userinfo”转到“/info/question”,两个ngonit()都不会被调用。

因为*ngIf在计算结果为false时不会首先创建组件,而是隐藏仅隐藏组件,但仍会创建它。

这将在中讨论。我强烈建议你看一看,因为它写得很好