我正在使用负责上传文件的第三方组件。我正在如下所示将这个组件导入到我的组件中,但是问题是我从来没有进入if
循环内。谁能指导我如何创建UploadComp
的对象?
import { UploadComp } from com.package.folder;
export class showUpload {
@ViewChild (UploadComp) uploadCompObj: UploadComp;
constructor(){
if(this.uploadCompObj){ //I am never going inside this if
this.uploadCompObj.popup = true;
}
} }
上传组件如下:
export declare class UploadComp implements Oninit{
popup: boolean;
overlay: boolean;
fileName: string;
errorMsg: any[];
}
答案 0 :(得分:2)
使用AfterViewInit()生命周期并使用if条件
import { UploadComp } from com.package.folder;
export class showUpload {
@ViewChild (UploadComp) uploadCompObj: UploadComp;
}
constructor(){}
ngAfterViewInit() {
if(this.uploadCompObj){ //I am never going inside this if
this.uploadCompObj.popup = true;
}
}
}
答案 1 :(得分:0)
我认为您必须使用角度生命周期挂钩。构造函数在角度稳定之前被调用。因此,请使用ngOnInit
ngOnInit(){
if(this.uploadCompObj){
this.uploadCompObj.popup = true;
}
}
答案 2 :(得分:0)
@ViewChild()
不是导入组件类的一部分,而是从component.html
如果可以很好地使用它,我会为您进行一些更改
从组件类中删除@ViewChild()
,您的代码应如下所示-
uploadCompObj: UploadComp = {
popup: true,
overlay: true,
fileName: null,
errorMsg: null
};
接下来,您需要从尝试导入的组件类中删除declare
-我不确定为什么要使用声明,但是只要导出一个组件类,就可以创建对象(如果它不是错误)问题,请不要删除
现在,您终于可以在constructor
和onInit()
中为属性设置值了,但是最佳实践是在onInit()
尝试访问的地方更改值-希望它能起作用>
谢谢-编码愉快!!