代码之家  ›  专栏  ›  技术社区  ›  godblessstrawberry

动态youtube弹出窗口的角度指令模板

  •  0
  • godblessstrawberry  · 技术社区  · 7 年前

    我要创建指令 youtube-video-popup.directive.html 它将侦听对元素的单击,并从模板动态创建弹出窗口。 E、 我希望这个html和所有方法都嵌入到指令中,这样我就可以添加这样的功能 <a youtubeVideoPopup="aFLEAmssDfax"></a> 并通过 videoId 生成弹出窗口,例如:

    <div preventBodyScroll class="modal-window modal-window--dark modal-window--no-padding">
        <a href="javascript:void(0)" class="modal-window__close" (click)="closeVideoPopup()"></a>
    
        <div class='embed-responsive embed-responsive-16by9'>
            <iframe id="ytplayer" type="text/html" [src]="videoId" frameborder="0" allowfdivlscreen></iframe>
        </div>
    </div>
    <div class="modal-backdrop" (click)="toggleVideoPopup()"></div>
    

    我不希望这是组件,因为它将需要一些额外的编码,包括 (click) 每次处理程序-我有很多不同的元素可以触发具有不同布局和样式的youtube视频弹出窗口。

    有人能建议一个行动方向吗?使用角度5+是否可以实现这一点?我从创建模板开始,但是 @Directive 甚至不接受 templateUrl 作为参数。


    对于这个特殊的youtube弹出窗口案例,我看到的一个可能的解决方案是使用 <youtube-popup-component> 直接进入 app.component.html 并通过 directive -> service -> component 基于该广告链接并显示弹出窗口,假设一次只能在页面上显示一个youtube弹出窗口

    0 回复  |  直到 7 年前
        1
  •  1
  •   Maksym    7 年前

    例如,您可以查看此存储库 https://github.com/pleerock/ngx-tooltip/tree/master/src . 这里有一些指令的示例,它使用应用的[工具提示]将动态创建的组件附加到组件。基本上最重要的事情是注射 ViewContainerRef 和 ComponentFactoryResolver 对于您的指令,您可以从那里构建一些组件并将其附加到DOM。