我已经使用自定义指令来检测角度 2 中元素外部的点击,但在角度 4 中则不可能。
[plunkr]
https://plnkr.co/edit/aKcZVQ?p=info
当我尝试在 angular-4 中使用相同的代码时,出现以下错误:
1. Argument of type '{ template: string; directives: typeof ClickOutside[]; }' is not assignable to parameter of type 'Component'. ==>
@Component({
templateUrl: "",
directives: [ClickOutside]
})
2. Type 'Subscription' is not assignable to type 'Observable<MouseEvent>'. in the directive inside ngOnInit() and ngOnDestroy()
ngOnInit() {
this.globalClick = Observable
.fromEvent(document, 'click')
.delay(1)
.do(() => {
this.listening = true;
}).subscribe((event:MouseEvent) => {
this.onGlobalClick(event);
});
}
ngOnDestroy() {
this.globalClick.unsubscribe();
}
如果 Angular 4 中的指令声明有任何变化,请告诉我,官方文档对此事没有帮助。