首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用angular2将元素添加到主体

如何使用angular2将元素添加到主体
EN

Stack Overflow用户
提问于 2016-08-21 20:24:01
回答 3查看 6.2K关注 0票数 3

我拥有的组件是一个自动完成器。然而,它位于一个固定的高度div和结果div需要亲生的身体和定位,以正确显示。在angular2中做这件事的正确方法是什么?

代码语言:javascript
复制
@Component({
    selector: 'autocomplete',
    template: `
        <div class="container" >
            <div>
              <input id="search" type="text" class="validate filter-input" [(ngModel)]=query (keyup)="filter()">
            </div>
            <div *ngIf="filteredList.length > 0">
                <ul *ngFor="let item of filteredList" >
                    <li >
                        <a (click)="select(item)">{{item}}</a>
                    </li>
                </ul>
            </div>
        </div>`,
})
export class AutocompleteComponent {
    private items: string[];
    public query: string;
    public filteredList: string[];
    public elementRef: ElementRef;

    constructor(element: ElementRef) {
        this.items = ['foo', 'bar', 'baz'];
        this.filteredList = [];
        this.query = '';
        this.elementRef = element;
    }
    filter() {
        if (this.query !== '') {
            this.filteredList = this.items.filter(function(item) {
                return item.toLowerCase().indexOf(this.query.toLowerCase()) > -1;
            }.bind(this));
        }
        else {
            this.filteredList = [];
        }
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-22 09:31:40

我还没有找到一个组件可以将元素添加到父级的方法,因此我建议如下(对我有用):

您应该将结果div移动到单独的组件中,并按照您的建议将主体作为父组件。要从原始组件中控制该组件,可以使用ngOnInit和ngOnDestroy生命周期挂钩将自动完成组件的存在切换到结果div组件。使用单例服务(由应用程序模块提供)来存储自动完成组件存在的状态。

票数 2
EN

Stack Overflow用户

发布于 2017-07-29 14:30:53

您可以在AutocompleteComponent的构造函数中任意移动组件html。

代码语言:javascript
复制
constructor(){
 document.querySelector('body').appendChild(elementRef.nativeElement);
            }

,但当组件破坏时,必须删除组件html,例如在ngOnDestroy()函数

代码语言:javascript
复制
ngOnDestroy(){
 document.querySelector('body').removeChild(elementRef.nativeElement); 
}
票数 2
EN

Stack Overflow用户

发布于 2016-08-22 09:48:30

您可以在一个页面中引导多个角应用程序,并共享一个服务,以便能够进行通信。

有关示例,请参见How to dynamically create bootstrap modals as Angular2 components?。代码示例尚未更新为RC.5。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39068531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档