Angular 角度变化在ngOnInit上为假为真

Angular 角度变化在ngOnInit上为假为真,angular,angular-changedetection,Angular,Angular Changedetection,我有一个具有选定ID数组的服务。当我初始化一个组件时,我会检查数组中是否存在该组件的ID。但是,Angular会引发一个异常,即在视图检查后值已更改 我尝试在之后添加detectChanges()。\u checked=true,尝试markForCheck()。此外,我尝试将这两种情况转移到不同的生命周期挂钩,但都没有成功,除了它开始工作时抛出了一个错误。角度变化检测就像绞肉机,您试图在过程中改变肉。通常,在这种情况下,markForCheck()就足够了。如果您发布完整的代码,我们可以尝试找

我有一个具有选定ID数组的服务。当我初始化一个组件时,我会检查数组中是否存在该组件的ID。但是,Angular会引发一个异常,即在视图检查后值已更改


我尝试在
之后添加
detectChanges()
。\u checked=true
,尝试
markForCheck()
。此外,我尝试将这两种情况转移到不同的生命周期挂钩,但都没有成功,除了它开始工作时抛出了一个错误。

角度变化检测就像绞肉机,您试图在过程中改变肉。通常,在这种情况下,
markForCheck()
就足够了。如果您发布完整的代码,我们可以尝试找出在您的情况下它不起作用的原因。如果全部失败,您始终可以执行以下操作:

setTimeout(() => {
  this.youChanges();
  this.changeDetectorRef.markForCheck();
});

角度变化检测就像绞肉机一样,您试图在过程中改变肉。通常,在这种情况下,
markForCheck()
就足够了。如果您发布完整的代码,我们可以尝试找出在您的情况下它不起作用的原因。如果全部失败,您始终可以执行以下操作:

setTimeout(() => {
  this.youChanges();
  this.changeDetectorRef.markForCheck();
});

detectChanges()
只对被调用的组件及其子组件有效,请显示完整的代码。尝试使用
setTimeout(()=>{this.\u checked=true})
。这可能会起作用。.尝试将其更改为afterViewInit钩子?在更改值之前调用
ChangeDetectorRef.detectChanges
。@ConnorsFan不,后面是它。@xyz忘了提及。我已经试过了,也答应过。那么
detectChanges()
将只对被调用的组件及其子组件有效,请显示完整的代码。尝试使用
setTimeout(()=>{this.\u checked=true})
。这可能会起作用。.尝试将其更改为afterViewInit钩子?在更改值之前调用
ChangeDetectorRef.detectChanges
。@ConnorsFan不,后面是它。@xyz忘了提及。我试过了,也试过了。结果是,我在同一个文本中又犯了一个错误,所以它起作用了。结果是,我在同一个文本中又犯了一个错误,所以它起作用了