Angular2:完全替换组件元素

时间:2016-07-19 12:04:49

标签: javascript angular components

我现在环顾四周,似乎找不到合适的答案......这应该是非常微不足道的......并且随处可见...似乎找不到它......

所以,我有一个非常非常简单的组件/指令,名为navItem

这就是我所说的

<ul>
    <nav-item route="/aboutus">About us</nav-item>
    <nav-item route="/contactUs">Contact us</nav-item>
</ul>

这就是它里面的东西(nav-item.html):

<li><a [routerLink]="route"><ng-content></ng-content></a></li>

所以我基本上就是这样:

import { Component, Input } from '@angular/core';
import { ROUTER_DIRECTIVES } from '@angular/router';

@Component({
    moduleId: module.id,
    selector: 'nav-item',
    template: require('./nav-item.html'),
    directives: [ROUTER_DIRECTIVES]
})
export class NavItem {
    @Input() route = '/';


    constructor(){}
}

我得到的是

<ul>
    <nav-item _ngcontent-xng-6="" route="/aboutus" ng-reflect-route="/aboutus"><li><a ng-reflect-router-link="/aboutus" ng-reflect-href="/aboutus" href="/aboutus">About us</a></li></nav-item>
    <nav-item _ngcontent-xng-6="" route="/contactus" ng-reflect-route="/contactus"><li><a ng-reflect-router-link="/aboutus" ng-reflect-href="/contactus" href="/contactus">Contact us</a></li></nav-item>
</ul>

我当然不想要。

我想要的是用<nav-item> </nav-item>

完全取代<li><a></a></li>

在AngularJs中非常简单。

2 个答案:

答案 0 :(得分:2)

这不受支持,我很确定它将来不会成功。很久以来,replace: true在Angular1中也被弃用了。

您可以使用

等属性选择器
@Component({
    moduleId: module.id,
    selector: '[nav-item]',
    template: require('./nav-item.html'),
    directives: [ROUTER_DIRECTIVES]
})
export class NavItem {
    @Input() route = '/';


    constructor(){}
}
<a [routerLink]="route"><ng-content></ng-content></a>

并像

一样使用它
<ul>
    <li nav-item route="/aboutus">About us</li>
    <li nav-item route="/contactUs">Contact us</li>
</ul>

答案 1 :(得分:0)

我认为你想要的是一个属性指令而不是上面建议的组件。