【发布时间】:2021-01-31 17:20:39
【问题描述】:
我有一个 Angular 10 应用程序,我正在尝试从登录组件中删除导航端组件,因此我在导航端组件上创建了一个包含以下代码的服务:
visible: boolean;
constructor() {
this.visible = true;
}
show() {
this.visible = true;
}
hide() {
this.visible = false;
}
toggle() {
this.visible = !this.visible;
}
doSomethingElseUseful() { }
在我放置的中庭组件内部:
export class NavsideComponent implements OnInit {
constructor(public sr: ServService ) { }
ngOnInit(): void {
}
和 Html 组件:
<div *ngIf="sr.visible">
<mat-sidenav-container class="example-container">
<mat-sidenav #sidenav mode="push" class="app-sidenav" opened>
<mat-toolbar class="co">
<span class="toolbar-filler"></span>
.
.
.
.
.
. </div>
但是显示了这个错误:
ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'ngIf: true'. Current value: 'ngIf: false'.
编辑 1
Login.component.ts
import { Component, OnInit } from '@angular/core';
import { ServService } from '../../navside/serv.service';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {
constructor( private sr :ServService) { }
ngOnInit(): void {
this.sr.hide();
this.sr.doSomethingElseUseful();
}
}
编辑 2
Stackblitz 将上面的 sn-ps 放在一起,可以看到警告:
https://stackblitz.com/edit/angular-ivy-vbkytu?file=src/app/login/login.component.ts
【问题讨论】:
-
你在任何地方调用 sr.show() 吗?
-
我在登录组件调用 sr.hide()
-
您可以编辑您的帖子并包含登录 component.ts 代码吗?
-
完成,我已经添加了
-
感觉像
this.cdr.detectChanges();上的ngOnInit()可以解决这里描述的问题:stackoverflow.com/questions/34364880/…
标签: javascript html angular