加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

twitter-bootstrap – Angular 2 Component内部的bootstrap popo

发布时间:2020-12-18 00:28:49 所属栏目:安全 来源:网络整理
导读:由于角度2没有配备完整的丰富组件,我决定在角度2内使用自举.我知道这不是最好的主意,因为它打破了虚拟圆顶问题,但我没有其他解决方案.我遇到的问题是角度2组件不会在popover html中呈现.有人有解决方案吗? 我正在看Renderer类,它似乎是我的解决方案,但我无
由于角度2没有配备完整的丰富组件,我决定在角度2内使用自举.我知道这不是最好的主意,因为它打破了虚拟圆顶问题,但我没有其他解决方案.我遇到的问题是角度2组件不会在popover html中呈现.有人有解决方案吗?

我正在看Renderer类,它似乎是我的解决方案,但我无法让它工作.这是一些代码:

>我的父组件,用于保存弹出窗口

ngAfterViewInit() {
// viewChild is updated after the view has been initialized

    var elements = jQuery(this.elementRef.nativeElement).find('[data-toggle="popover"]');
    jQuery.each(elements,jQuery.proxy(function(index,element){
            var eventId = jQuery(element).prop('id');
            jQuery(element).popover({ html : true,placement: 'top',container: 'body',content: this.getEventContent(eventId) }); 
    },this));     
}
getEventContent(eventId){
    var selectedEvent = this.getEvent(eventId);
    var button = jQuery('<button type="button" class="btn register"></button>');

    var angularViewHolder= jQuery('<div></div>');

    this.renderer.createElement(angularViewHolder[0],'event-view')
    button.attr('id',eventId);
    return selectedEvent.description + '<br />' + 
        button[0].outerHTML + angularViewHolder[0].outerHTML;  
}

我需要在popover中呈现的事件视图组件

import {Component,View} from 'angular2/core';
@Component({
    selector: 'event-view',template: '<div>Application details for application id: <h1>{{id}}</h1> will be loaded here!</div>',inputs: ['id']
})

export class EventView {
    id: string;
    constructor() {

    }
}

我认为我的解决方案将在Renderer.renderComponent,但我不知道如何使用它.

解决方法

你可以简单地说

像这样初始化一个正常的bootstrap popover

let popOver = $('[rel="popover"]');

popOver.popover({
    container: 'body',html: true,content: function () {
        return $('#myContent').removeClass('hide');
    }
}).click(function(e) {
    e.preventDefault();
});

popOver.on('show.bs.popover',(event) => {
    this.popover_initialized = true;
});

popOver.on('hide.bs.popover',(event) => {
    $(".popover[role=tooltip]").addClass('hide');

    event.preventDefault();
    event.stopImmediatePropagation();
});

然后你只需要在激活弹出窗口的元素上定义一个要调用的函数

showToolTip(){
    if(!this.popover_initialized){
        return;
    }

    $(".popover[role=tooltip]").removeClass('hide');
}

所以,第一次bootstrap初始化一个普通的popover,但我们阻止默认情况下销毁html内容,然后你只需添加一个’hide’类,然后当你想再次激活它时你只需删除该类,适用于角度指令,绑定等

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读