Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.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
角度4在html完全加载时执行函数_Html_Angular_Typescript - Fatal编程技术网

角度4在html完全加载时执行函数

角度4在html完全加载时执行函数,html,angular,typescript,Html,Angular,Typescript,我在Angular 4中使用typescript/components进行异步HTTP调用时遇到问题。。。我创建了一个对象数组,在HTML中,对象旁边有复选框。现在我想通过执行角度函数来检查某些对象。但是当我这样做的时候 (document.getElementById(id) as HTMLInputElement).checked = true; 在我的组件中。 它找不到元素,但是当我在一个函数中执行相同的代码时,当你按下一个按钮它就会工作。所以问题是当我执行函数时HTML没有完全加载。

我在Angular 4中使用typescript/components进行异步HTTP调用时遇到问题。。。我创建了一个对象数组,在HTML中,对象旁边有复选框。现在我想通过执行角度函数来检查某些对象。但是当我这样做的时候

 (document.getElementById(id) as HTMLInputElement).checked = true;
在我的组件中。
它找不到元素,但是当我在一个函数中执行相同的代码时,当你按下一个按钮它就会工作。所以问题是当我执行函数时HTML没有完全加载。如何确保HTML已完全加载

是的,你不应该操纵DOM

  • 使用哈希在HTML中标记HTML元素

  • 在ts控制器组件中检索

    @ViewChild('inputname')输入

  • 查看初始化后检查。ngAfterViewInit(如果选中)

    ngAfterViewInit(){
    ...
    (此.form作为HTMLInputElement)。已选中
    ...
    }


考虑将此作为最后一个选项,因为我不建议在Angular中直接进行DOM操作。但是如果您仍然面临这个问题,可以使用我的解决方案作为解决方案

在构造函数中

let interval = setInterval(() => {
        let flag = self.checkFunction();
        if (flag)
            clearInterval(interval);
    }, 100)
现在创建函数

checkFunction() {
    if(document.getElementById(id)){
         (document.getElementById(id) as HTMLInputElement).checked = true;
         return true;
    }
    return false;
}

您不应该试图以这种方式操纵DOM。而是将所需状态设置为组件的属性,并根据需要使用单向或双向绑定来设置HTML模板中的checked属性。好的,但如果我这样做,则所有元素都已选中,但并非所有标志都为true,这就是为什么您应该使用而不是绑定到
checked
属性。您应该阅读…我给了我的绘图一个flag属性,因此我可以在输入元素中执行[checked]=“drawing.flag”