在angular2中,如何通过两种方式编写自定义指令,并且我不想将naModel用于数据绑定。
当前,我想实现一个函数,当鼠标进入或离开div时,该指令还将修改绑定对象。以下是我的代码:
指示:
import { Directive, HostListener, Input } from '@angular/core';
@Directive({
selector: '[rowHover]'
})
export class HoverDirective {
@Input('rowHover') hover: boolean;
@HostListener('mouseenter') onMouseEnter() {
this.hover = true;
}
@HostListener('mouseleave') onMouseLeave() {
this.hover = false;
}
}
成分:
import {Component} from "@angular/core";
import {PairRowComponent} from './pair-row.component';
import {HoverDirective} from '../directives/pair-hover.directive';
@Component({
selector: "pairs-result",
templateUrl: "./app/pairs/components/pairs.html",
directives: [PairRowComponent, HoverDirective]
})
export class PairsComponent {
public showDetail: boolean = false;
}
的HTML
<ul class="search-list">
<li [(rowHover)]="showDetail">{{showDetail}}<pair-row></pair-row></li>
</ul>
我想在鼠标进入或离开li标签时更改showDetail的值。
非常感谢!
您可以使showDetail
对象成为而不是boolean
,然后更改该对象的属性。注意,您甚至不需要将属性标记为输出(()
):
@Component({
selector: "pairs-result",
template: `
<ul class="search-list">
<li [rowHover]="showDetail">{{showDetail.value}}<pair-row></pair-row></li>
</ul>
`, // ^^^^^^^^-- no need of (rowHover) ^^^^^^^^--- .value added here as well
directives: [HoverDirective]
})
export class PairsComponent {
public showDetail: any = {value: false}; // property is now an object instead of a bool
}
指示:
@Directive({
selector: '[rowHover]'
})
export class HoverDirective {
@Input('rowHover') hover: any;
@HostListener('mouseenter') onMouseEnter() {
this.hover.value = true; // <-- notice the .value here
}
@HostListener('mouseleave') onMouseLeave() {
this.hover.value = false; // <-- notice the .value here
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句