繁体   English   中英

Angular:同时使用 ViewChild 和 Input,副作用还是最佳实践?

[英]Angular: Using ViewChild and Input at the Same time, Side Effects or Best practice?

如果同时使用ViewChildInput会不会有任何错误或冲突? 或者它是一般推荐的做法?

目前有父子组件。

要求:

a) 父组件需要告诉子组件做很多事情:将表单标记为已触摸、更新值、操作 DOM、删除验证器等。@Input() 更难的事情。

b) 还需要应用输入,但是在这里查看资源, ViewChild vs Input/Ouput - Angular Best Practices

ViewChild 不会显示来自 NgOnChanges() 正在进行的输入的子组件 View 数据更改。 但是,使用@Input() 将呈现输入/参数中的更改。

所以如果同时使用ViewChild和Input这两个选项来提取这两个好处,想知道以后会不会出错? 如果 Native Angular 8 有这两种与孩子沟通的方式,它会面临任何渠道沟通问题吗?

其他资源:

angular 的 @input vs viewchild 用于将数据从父组件发送到子组件

您指出的链接有点旧。 在我看来,当我们想要使用 child(*) 的方法或函数,或者改变他的方面时,使用 viewChild 很有用。 对于控制变量或 FormGroup 或 formControl,我最好的选择是使用 @Input。

请记住,当我们将一个对象传递给 Input 中的孩子时,有一个唯一的对象,因此当发生任何更改时,父和子具有值 - 在子中或在父中 - 例如,如果我们传递一个 FormGroup,您可以标记触摸时,删除/添加验证器,使用 setValue... 从父级或表单子级。 关于@Input 是真的,如果你有一个“输入固定” - 你传递一个不变的变量 - ,如

<child greet="Hello word"></child>

您应该在构造函数中使用@Attribute ,而不是输入

constructor(@Attribute('greet') greet){}

(*) 你可以使用带有 setter 的输入,但在这种情况下,我更喜欢使用 viewChild 或变量引用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM