【发布时间】:2020-02-12 04:22:17
【问题描述】:
我最近将我的 Angular 项目更新到版本 9。我正在使用一项服务来更新主菜单的标题,它运行成功,但现在产生了这个错误:
core.js:5828 ERROR 错误:ExpressionChangedAfterItHasBeenCheckedError: 检查后表达式已更改。以前的值: '主题'。当前值:“新标题”。
每次标题更改时都会出现此错误。
这是我的代码的一部分:
我的路线:
app-routing.module.ts:
const routes: Routes = [
{
path: '',
component: MainComponent,
canActivate: [AuthGuard],
canActivateChild: [AuthGuard],
children: [
{
path: '',
component: DashboardComponent
},
{
path: 'warehouse',
loadChildren: () =>
import('./systems/warehouse/warehouse.module').then(
m => m.WarehouseModule
)
},
{
path: 'commerce',
loadChildren: () =>
import('./systems/commerce/commerce.module').then(
m => m.CommerceModule
)
},
{
...
主要成分:
main.component.ts:
pageTitle: string;
ngOnInit() {
this.mainService.pageTitle$.subscribe((title: string) => {
this.pageTitle = title;
});
...
我用来更改标题的服务: main.service.ts:
public setTitle(title: string) {
this.pageTitle$.emit(title);
}
最后是我在仓库模块中更改标题的客户之一:
main.service.ts:
this.mainService.setTitle('new title');
更新:
该问题仅在启用 Ivy 并处于开发模式时发生。 "enableIvy": false 或生产时没有错误。
【问题讨论】:
-
如果可能的话,您能否在 stackblitz.com 中重现此问题
-
如何使用 Angular 9 启动 Stackblits?
-
你可以在 package.json
"@angular/animations": "^8.2.14", "@angular/common": "9.0.0-rc.1", "@angular/compiler": "9.0.0-rc.1", "@angular/core": "9.0.0-rc.1", "@angular/forms": "9.0.0-rc.1", "@angular/platform-browser": "9.0.0-rc.1", "@angular/platform-browser-dynamic": "9.0.0-rc.1", "@angular/router": "9.0.0-rc.1"987654325@替换下面的行 -
什么是 pageTitle$?是 EventEmitter 吗?
-
@Rajat 是的。是的。
标签: javascript angular angular9