1
我用@HostBinding
與Chrome的拖放在一起設置一個類的變化和Drop API這樣的:角2沒有偵測到@HostBinding
@Directive({ selector: '[sortable-article]' })
export class SortableArticleComponent {
@HostBinding('class.dragged-element')
isDraggedArticle: boolean = false;
constructor(elRef: ElementRef, private ref: ChangeDetectorRef, private appRef: ApplicationRef, private dndService: ArticleDndService) {
this.el = elRef.nativeElement;
Observable.fromEvent(this.el, 'dragstart').subscribe(e => this.onDragStart(<DragEvent> e));
Observable.fromEvent(this.el, 'drop').subscribe(e => this.onDrop(<DragEvent> e));
}
onDragStart(event: DragEvent) {
this.isDraggedArticle = true;
}
onDrop(event: DragEvent) {
event.preventDefault();
this.isDraggedArticle = false;
}
}
什麼情況是,更多的時間則沒有,isDraggedArticle
類不從元素中刪除,我不知道爲什麼。我嘗試添加
this.ref.detectChanges();
this.appRef.tick();
到onDrop方法(其中ref
是ChangeDetectorRef
和appRef
是ApplicationRef
),但它並不能幫助。
所以你onDrop方法被調用,在合適的時間和isDraggedArticle不會改變? – Sam
是的,好點,但我可以證實,因爲實際上更多的東西發生在onDrop上,實際上被執行。 – Lukas
對我來說你的代碼是正確的。如果你在構造函數中初始化isDraggedArticle,沒有改變? @HostBinding('class.dragged-element') isDraggedArticle:boolean; 構造函數(this.isDraggedArticle = false) – Sam