首页 > 其他 > 详细

3-4 在模板中引用多个元素

时间:2019-11-04 12:42:52      阅读:70      评论:0      收藏:0      [点我收藏+]



技术分享图片
在父组件内引用子组件的
技术分享图片
技术分享图片
引用多个的情况。QueryList是一个泛型
技术分享图片
 

实战

选取图片。图片是ngFor循环 会有多个
技术分享图片
使用@ViewChildren
技术分享图片

技术分享图片

在组件初始化里面输出看一下
技术分享图片
在ngOnInit里面第一个打印出来,第二个没有打印出来。
技术分享图片
这就是angular的生命周期了。 ngOnInit的时候视图其实还没有真正的渲染好。我们在ngOnAfterViewInit里面打印这个imgs对象,
技术分享图片

技术分享图片
数组当中有5个元素
技术分享图片
视图在ngOnAfterViewInit内是完全渲染好的,是可以安全的使用它。那么下面单个element为什么可以在ngOnInit输出呢?并不说在ngOnInit内就是不行,在某种情况下ngOnInit也是可以得到视图中的元素。但是非常安全的一点是在ngOnAfterViewInit中去做。
并不是说在ngOnInit中就是不行,但是在ngOnAfterViewInit中就一定行。
技术分享图片

conole内输出了各个各个生命周期的函数,影响我们的显示,把这些生命周期的 去掉先。
技术分享图片
技术分享图片
生命周期的相关方法删除
技术分享图片
OnInit也不要了
技术分享图片
删除
技术分享图片
再看最终的输出 相对清晰一下
技术分享图片
得到了images的一组对象,循环
技术分享图片
技术分享图片
技术分享图片

直接操作dom。Renderer2

在构造函数内注入。Renderer2
技术分享图片
他会在上面自动引入。在angular/core的包里面
技术分享图片

循环操作图片的高度
技术分享图片


技术分享图片


技术分享图片
把上面原来直接操作dom的代码删掉
技术分享图片
如果允许直接操作dom,会引起一些注入攻击。用rd2去操作dom会增加安全性。rd2操作之前会做验证。
技术分享图片

@ViewChild引用angular的组件

在app.component.html内给子组件起个别名
技术分享图片
使用@ViewChild引用
技术分享图片
技术分享图片
在ngAfterViewInit内输出这个对象。
技术分享图片

技术分享图片
一个属性是子组件的imgSilder属性。
技术分享图片
这四个和子组件内属性都是对应的
技术分享图片

如果是angular的组件的话,可以直接这么写
技术分享图片
htm内的别名就可以去掉。
技术分享图片
输出的结果是一样的
技术分享图片 

所以在@ViewChild中不单可以起别名,也可以通过属性,组件的类型或者指令来去选择,前提是它是一个angular的组件或者指令。
技术分享图片

总结

技术分享图片
 

3-4 在模板中引用多个元素

原文:https://www.cnblogs.com/wangjunwei/p/11791119.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!