Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular2动态内容加载引发表达式更改异常_Angular - Fatal编程技术网

Angular2动态内容加载引发表达式更改异常

Angular2动态内容加载引发表达式更改异常,angular,Angular,我正在创建一个通用甘特图可视化组件 我将在其中显示周和任务的部分是通用的,但每行都有一个标题,我希望是动态的,因此,例如,当显示每个用户的任务列表时,我希望放置一些用户数据和一些操作按钮,但当按项目显示任务时,我希望显示项目数据和项目操作按钮 我实施了以下解决方案: 一切似乎都很好,我看到每个场景中的操作按钮加载方式不同,但用户或项目数据的加载方式不同。另外,单击按钮上的console.log(this.data.name),我正确地看到了控制台中的数据,但是如果我尝试在模板{{data.nam

我正在创建一个通用甘特图可视化组件

我将在其中显示周和任务的部分是通用的,但每行都有一个标题,我希望是动态的,因此,例如,当显示每个用户的任务列表时,我希望放置一些用户数据和一些操作按钮,但当按项目显示任务时,我希望显示项目数据和项目操作按钮

我实施了以下解决方案:

一切似乎都很好,我看到每个场景中的操作按钮加载方式不同,但用户或项目数据的加载方式不同。另外,单击按钮上的console.log(this.data.name),我正确地看到了控制台中的数据,但是如果我尝试在模板
{{data.name}}
上打印,我什么也看不到

我在控制台中看到以下错误:

错误:表达式在检查后已更改。上一个值:“CD_初始值”。当前值:“测试项目-任务3” “。该视图似乎是在对其父视图及其子视图进行脏检查后创建的。它是在变更检测钩子中创建的吗

我仔细检查了所有步骤,我正在做与你在教程中看到的完全相同的事情

有人知道那个教程是否过时了吗

提前感谢您的帮助

编辑: 如果我将ngAfterViewInit更改为ngOnInit,一切都会正常工作。。。但是根据教程,我应该使用第一个。谁能给我解释一下吗?:-)

错误说明了一切:

该视图似乎是在其父视图及其子视图创建之后创建的 我已经检查过了。它是在变更检测钩子中创建的吗

您已经动态地创建了组件(“角度生命周期之外”),这意味着您需要手动控制更改检测

这就是你需要做的:

1) 为其创建组件fire detectChanges()后

2) 在处理变更检测之前

以下是我的指令动态创建组件的示例:

export class validationMessage指令实现AfterViewInit、OnDestroy{
私有validationMessageComponent:ComponentRef=null;
ngAfterViewInit():void{
让工厂=this.componentFactoryResolver.resolveComponentFactory(this.vmComp);
这是Ngondestory();
this.validationMessageComponent=this.viewContainer.createComponent(工厂,null,this.viewContainer.injector);
this.validationMessageComponent.changeDetectorRef.detectChanges();
}
ngOnDestroy():void{
if(此.validationMessageComponent){
this.validationMessageComponent.changeDetectorRef.detach();
//this.validationMessageComponent.destroy();
}
}
建造师(
私有viewContainer:ViewContainerRef,
专用componentFactoryResolver:componentFactoryResolver,
@注入(ValidationMessageComponent)私有vmComp:Type
) { }
}

相关问题:

看不到代码就很难判断。你能在一个垃圾桶里繁殖吗?是的!多亏了Ultimate Angular的课程,我昨天才明白这一点,但我忘了我在这里有这个,很好的捕捉,先生:-)这清除了我的动态组件的错误,但现在它的主机(静态)得到了相同的错误(但没有关于在其父视图之后创建视图的模糊).即使使用任何可以在父母之前创建孩子的方法?@RollWhisTler你能让我参考一下这个角度课程吗。