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

angularjs – Angular2:用组件的模板替换主机元素

发布时间:2020-12-17 08:10:54 所属栏目:安全 来源:网络整理
导读:我是新来的一般角度,特别是角度2。我试图写一个容器组件,它应该有子组件。 例如,容器组件: @Component({ selector: 'my-list',template: ` ul ng-content/ng-content /ul `})export class MyList {} 子组件: import { Component } from 'angular2/core'
我是新来的一般角度,特别是角度2。我试图写一个容器组件,它应该有子组件。

例如,容器组件:

@Component({
  selector: 'my-list',template: `
    <ul>
      <ng-content></ng-content>
    </ul>
  `
})
export class MyList {
}

子组件:

import { Component } from 'angular2/core'

@Component({
  selector: 'my-item',template: `
    <li>
      <ng-content></ng-content>
    </li>
  `
})
export class MyItem {
}

我想做这个结构:

<my-list>
    <my-item>One</my-item>
    <my-item>Two</my-item>
</my-list>

要呈现如下:

<my-list>
    <ul>
        <li>One</li>
        <li>Two</li>
    </ul>
</my-list>

但是,我拥有容器的主机元素,并保留项目:

<my-list>
    <ul>
        <my-item>
            <li>One</li>
        </my-item>
        <my-item>
            <li>Two</li>
        </my-item>
    </ul>
 </my-list>

Plunk is available here

问题:有没有办法消除主机元素,只留下渲染的模板?

最后我找到解决方案:将ElementRef注入MyItem并使用其nativeElement.innerHTML:

我的列表:

import { Component,ContentChildren,QueryList } from 'angular2/core'
import { MyItem } from './myitem'

@Component({
  selector: 'my-list',template: `
    <ul>
      <li *ngFor="#item of items" [innerHTML]="item.innerHTML"></li>
    </ul>
  `
})
export class MyList {
  @ContentChildren(MyItem) items: QueryList<MyItem>
}

MyItem:

import { Directive,Inject,ElementRef } from 'angular2/core'

@Directive({selector: 'my-item'})
export class MyItem {
  constructor(@Inject(ElementRef) element: ElementRef) {
    this.innerHTML = element.nativeElement.innerHTML
  }
}

Working plunk is here

(编辑:李大同)

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

    推荐文章
      热点阅读