Angular 使用@ViewChild引用检查表达式后,该表达式已更改

Angular 使用@ViewChild引用检查表达式后,该表达式已更改,angular,angular-changedetection,Angular,Angular Changedetection,您好,我正在使用此关联菜单组件: 当我绑定[contextMenu]=basicMenu时 像这样,使用basicMenu和 @ViewChild(ContextMenuComponent) public basicMenu:ContextMenuComponent 我得到以下错误: 表达式ChangedTerithascheckederRor:以前的值: “上下文菜单:未定义”。当前值:“上下文菜单[对象]” 我知道错误是因为在运行钩子的过程中间,在视图初始化之前改变了值,所以我尝试用Cuf

您好,我正在使用此关联菜单组件: 当我绑定[contextMenu]=basicMenu时 像这样,使用basicMenu和

@ViewChild(ContextMenuComponent)
public basicMenu:ContextMenuComponent
我得到以下错误: 表达式ChangedTerithascheckederRor:以前的值: “上下文菜单:未定义”。当前值:“上下文菜单[对象]”

我知道错误是因为在运行钩子的过程中间,在视图初始化之前改变了值,所以我尝试用CuffeDeCTeReReF在NGReleVistWin中运行变化检测,但是它也不起作用。

< P>尝试:

@ViewChild(ContextMenuComponent, { static: true }) public basicMenu: ContextMenuComponent;

我认为Angular 9中的@ViewChild有一些突破性的变化。

这将使它在ngOnInit中而不是ngAfterViewInit中可用,不用担心,我认为您使用的是Angular的旧版本。我不知道如何解决这个问题,可能是图书馆的问题?阅读第一个答案,在这里也尝试第一个答案,但我不确定这是多么干净/可持续。是的,我认为它在版本7中不可用。我想它是在版本8中引入的。我将尝试升级。。同时,我使用了ngAfterContentChecked钩子,然后使用changeDetectorRef强制执行另一个更改检测