Angular6中CDK中的Overlay与Portals的简介

栏目: JavaScript · 发布时间: 7年前

内容简介:Portals模块的功能就是将动态内容(可以是Component也可以是一个TemplateRef)显示到引用程序中。Portal:表示内容。PortalOutlet: 放置内容的位置。结论: 这样就可以通过仅仅引入一个service来实现一个弹窗,而不需要在使用的地方引入这个组件。本次介绍的比较简单,关于位置策略和滚动策略本次并没有深入讲解,希望大家在使用一些简单的overlay时,可以起到一些小的作用~ :stuck_out_tongue_closed_eyes:
  • 位置策略:一个处理overlay的显示位置
  1. GlobalPositionStrategy: 当overlay的PositionStrategy设置成GlobalPositionStrategy的时候,overlay的位置是相对整个窗口而言的。
  2. ConnectedPositionStrategy: 当overlay的位置需要依赖于另外一个视图的位置的时候采用该ConnectedPositionStrategy来确定overlay的位置。可以使用FlexibleConnectedPositionStrategy来代替
  3. 可以使用FlexibleConnectedPositionStrategy来代替: overlay的位置依赖于某个视图的位置。
  • 滑动策略:一个处理有滑动的时候overlay的动作。
  1. NoopScrollStrategy: origin滚动的时候,overlay位置不动
  2. CloseScrollStrategy: origin位置变动的时候,overlay会自动关掉
  3. BlockScrollStrategy: origin的滚动也会消失掉
  4. RepositionScrollStrategy: overlay会跟着origin位置的变动而变动

Portals模块的功能就是将动态内容(可以是Component也可以是一个TemplateRef)显示到引用程序中。Portal:表示内容。PortalOutlet: 放置内容的位置。

Portal的关键地方:

  • ComponentPortal
  • TemplatePortal
  • PortalOutlet

现在通过一个在service中创建一个overlay作为实例进行使用这些点,这里以动态添加Component为例

首先介绍一些接下来会用的ComponentRef:

表示通过ComponentFactory创建的组件的实例。 ComponentRef提供对组件实例的访问以及与此组件实例相关的其他对象,并允许您通过destroy方法销毁组件实例。

所包含的属性:

  1. location : ElementRef 组件实例的宿主元素所在的位置
  2. injector : Injector 组件实例存在的注射器
  3. instance : C 组件实例[此次主要用到这个属性,可以在service中调用该组件实例上的方法]
  4. hostview : ViewRef 组件实例的宿主视图ViewRef
  5. changeDetectorRef : ChangeDetectorRef 组件的ChangeDetectorRef
  6. componentType: Type 组件类型
  7. destroy() : void 销毁组件实例及其附加数据
  8. onDestroy(callback: Function) : void 允许注册将在组件销毁时调用的回调
export testClass{
    // 首先在一个service中引入NotificationTestComponent,这个就是要通过引入此service会显示的内容
    private _notificationTestRef: ComponentRef<NotificationTestComponent>;
    private _overlayRef: OverlayRef;
    
    // 调用 overlay.create() 会返回一个OverlayRef 实例. 这个实例用来处理具体的一个overlay
    // this._overlayRef 是一个 PortalOutlet- 一旦创建可以通过attach Portal添加内容
    private _createNotificationTest(): void {
    this._overlayRef = this._overlay.create();
    this._notificationRef = this._overlayRef.attach(new ComponentPortal(NotificationComponent));
  }
}
复制代码

结论: 这样就可以通过仅仅引入一个service来实现一个弹窗,而不需要在使用的地方引入这个组件。本次介绍的比较简单,关于位置策略和滚动策略本次并没有深入讲解,希望大家在使用一些简单的overlay时,可以起到一些小的作用~ :stuck_out_tongue_closed_eyes:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据结构与算法

数据结构与算法

Michael McMillan / 吕秀峰、崔睿 / 人民邮电出版社 / 2009-5 / 49.00元

《数据结构与算法C#语言描述》是在.NET框架下用C#语言实现数据结构和算法的第一本全面的参考书。《数据结构与算法C#语言描述》介绍的方法非常实用,采用了时间测试而非大O表示法来分析算法性能。内容涵盖了数据结构和算法的基本原理,涉及数组、广义表、链表、散列表、树、图、排序搜索算法以及更多概率算法和动态规则等高级算法。此外,书中还提供了.NET框架类库中的C#语言实现的数据结构和算法。 《数据......一起来看看 《数据结构与算法》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具