ViewChild vs ChildComponent-角度6

时间:2018-07-26 09:37:36

标签: angular angular2-directives angular6

有许多代码示例演示了组件通信,

我对这两种技术之间的区别感到困惑

  • ChildComponent
  • ViewChild

定义了ViewChild:

  

ViewChild装饰器可以访问子组件,指令或   来自父组件类的DOM元素,ViewChild返回第一个   与给定的组件,指令或模板匹配的元素   参考选择器。

根据此参考资料

ViewChild可以完全访问DOM元素的父组件,而无需在任何更新时向其父组件发送EventEmitter即可。

我的问题

  • 我们可以说父组件和viewchild之间的关系是 只有单向出价,并且在父级组件和子级组件之间是双向绑定?
  • 数据绑定,生命周期的核心作用是什么?

  • 真正的实际用法是什么,它要解决什么问题?

2 个答案:

答案 0 :(得分:2)

是的,其中一些术语令人困惑。

在大多数情况下,父级和子级关系(父级组件和子级组件)是在另一个组件的HTML中内引用组件。

在下面的示例中,“星标”组件是产品详细信息组件中的子组件。

enter image description here

子组件实际上是在父组件的模板中添加的:

父模板:

  <div class='col-md-8'>
    <pm-star [rating]='product.starRating'>
    </pm-star>
  </div>

子组件

@Component({
  selector: 'pm-star',
  templateUrl: './star.component.html',
  styleUrls: ['./star.component.css']
})
export class StarComponent {
  // ...
}

另一方面,ViewChild装饰器使您可以访问组件关联模板上的 any 元素。然后,您可以直接访问它。这与父/子组件没有直接关系。

例如,您可以访问页面上的任何随机<div>元素并设置其背景颜色。或者,您可以访问<input>元素并设置其焦点。

希望这有助于弄清差异。

答案 1 :(得分:0)

Component interactions是两个组件相互通信的方式。

ViewChild decorator是现有组件交互之一。