angular2中指令、组件、管道、服务的定义

1  指令

@Directive({
    selector:'[tooltip]'
})
export class tooltip{
    private overlay:Overlay;
    @Input()
    private tooltip:string;
    constructor(private el:ElementRef,manager:OverlayManager){
        this.overlay=manager.get();
    }
    @HostListener('mouseenter')
    onMouseEnter(){
        this.overlay.open(this.el.nativeElement,this.tooltip);
    }
    @HostListener('mouseleave')
    onMouseLeave(){
        this.overlay.close();
    }
}

        以上是用typescript定义的指令,在模板中可利用以下标签使用这一指令:

<div tooltip="42">Tell me the answer!</div>    

        当用户鼠标移动到标签,angular将会调用定义在指令装饰器@HostListener中的方法。最后,overlay上的open方法就会被执行。


2  组件

@Component({
    selector:'hello-world',
    template:'<h1>Hello,{{this.target}}!</h1>'
})
class HelloWorld{
    target:string;
    constructor(){
        this.target='world';
    }
}

        以上是用typescript定义的组件,如果要使用它,可以在视图中嵌入以下标签:

<hello-world></hello-world>

        当angular2应用启动的时候,框架将会遍历DOM树中的所有组件并处理它们。一旦发现这个叫作hello-world的标签,框架就会去调用组件定义中的逻辑,也就是说组件的模板会被渲染出来,花括号之间的表达式被运算。最终获得的结果就是<h1>Hello,world!</h1>这样一个标签。


3  管道

@Pipe({name:'lowercase1'})
class LowerCasePipe1 implements PipeTransform{
    transform(value:string):string{
        if(!value) return value;
        if(typeof value !== 'string'){
            throw new Error('Invalid pipe value',value);
        }
        return value.toLowerCase();
    }
}

        以上是用typescript定义的名为lowercase1的管道,它的作用是把参数传递进来的字符串转换成小写形式。可用以下方式在组件中使用lowercase1管道:

@Component({
    selector:'app',
    pipes:[LowercasePipe1],
    template:'<h1>{{"SAMPLE"|lowercase1}}</h1>'
})
class App {}

        用以下标签来使用App组件:

<app></app>

        将会在屏幕上看到h1标签内部的sample这个单词。

        typescript语法中实现了pipeTransform接口,定义了接口中声明的transform方法。


4  服务

@Injectable()
class User {
    constructor(private service:HttpService){}
    save() {
        return this.service.post('/users')
            .then(res => {
                this.id=res.id;
                return this;
            });
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值