【Angular实战/网易云】搜索组件

这篇博客详细介绍了如何在Angular中实现搜索组件的显示和隐藏,利用Overlay创建动态组件,并通过监听input元素的事件进行显示和隐藏的时机确认。文章强调了使用debounceTime和distinctUntilChange进行性能优化,以及组件间通信和模板渲染的方法。
摘要由CSDN通过智能技术生成

一. 显示和隐藏搜索组件

显示搜索组件就是在原来的界面上又跳出一个新的组件,这个可以用material cdk中的overlay来实现。

简单地来说就是:

  1. 用注入的Overlay实例的create方法创建OverlayRef实例。
  2. 利用ComponentPortal创建动态组件,赋值给panelPortal对象。
  3. 最后把panelPortal和overlayRef用attach方法结合起来。
  showOverlayPanel() {
    this.hideOverlayPanel();
    // 确定overlay显示的位置
    const positionStrategy = this.overlay.position()
      .flexibleConnectedTo(this.connectedRef || this.defalutRef)
      .withPositions([{
        originX: 'start',
        originY: 'bottom',
        overlayX: 'start',
        overlayY: 'top'
      }]).withLockedPosition(true);
    
    // 用工厂方法指定overlay实例
    this.overlayRef = this.overlay.create({
      hasBackdrop: true,
      positionStrategy,
      scrollStrategy: this.overlay.scrollStrategies.reposition()
    });
    const panelPortal = new ComponentPortal(WySearchPanelComponent, this.viewContainer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值