我有一个角度应用程序,设置如下:
1)页面状态服务:
import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root' }) export class PageStateService { page: string = "board"; changePage(switchTo: string) { console.log("X"); this.page = switchTo; console.log(this.page); } constructor() {} }
2)每个组件都包含此服务,并作为依赖项注入。
3)仪表板部件:
<div class="wrapper"> <app-sidenav></app-sidenav> <div class="sub-wrapper"> <app-bar></app-bar> <app-board ng-if="pageState.page === 'board'"></app-board> <app-stock ng-if="pageState.page === 'stock'"></app-stock> </div> </div>
4)我有一个SideNav组件负责更改状态:
<button type="button" class="btn btn-light active" (click)="pageState.changePage('board')"> <span> <i class="material-icons"> dashboard </i> </span> Dashboard</button> <button type="button" class="btn btn-light" (click)="pageState.changePage('stock')"> <span> <i class="material-icons"> store </i> </span> Stock</button>
问题是: 当我单击一个按钮时,控制台将记录页面变量以及服务中看到的x,但ng if不起作用。它不会检查页面变量并呈现组件。我也尝试过NG节目。
ng-if 是AngularJS语法,请尝试 *ngIf="pageState.page === 'board'"
ng-if
*ngIf="pageState.page === 'board'"
确保将注入的服务定义为 public 以便可以从HTML模板访问它。
public