gpt4 book ai didi

twitter-bootstrap - Bootstrap 弹出窗口中的 Angular 2 组件

转载 作者:太空狗 更新时间:2023-10-29 17:28:42 24 4
gpt4 key购买 nike

由于 angular 2 没有完整的丰富组件,我决定在 angular 2 中使用 Bootstrap 。我知道这不是最好的主意,因为它打破了虚拟圆顶问题,但我没有其他解决方案。我遇到的问题是 angular 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;
    }

我需要在弹出窗口中呈现的事件 View 组件

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 弹出窗口

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' 类,然后当你想再次激活它时你只需简单地删除该类,这适用于 Angular Directive(指令)、绑定(bind)等

关于twitter-bootstrap - Bootstrap 弹出窗口中的 Angular 2 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35529540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com