fix(fab): not using change detection

fixes #8424
This commit is contained in:
Manu Mtz.-Almeida
2016-10-06 16:22:56 +02:00
parent 28661f648e
commit 47e1e1766a
2 changed files with 11 additions and 6 deletions

View File

@ -5,6 +5,7 @@ import { Ion } from '../ion';
import { UIEventManager } from '../../util/ui-event-manager';
import { isTrueProperty } from '../../util/util';
import { nativeTimeout } from '../../util/dom';
/**
* @name FabButton
@ -126,14 +127,13 @@ export class FabButton extends Ion {
*/
@Directive({
selector: 'ion-fab-list',
host: {
'[class.fab-list-active]': '_visible'
}
})
export class FabList {
_visible: boolean = false;
_fabs: FabButton[] = [];
constructor(private _elementRef: ElementRef, private _renderer: Renderer) { }
@ContentChildren(FabButton)
set _setbuttons(query: QueryList<FabButton>) {
let fabs = this._fabs = query.toArray();
@ -150,18 +150,23 @@ export class FabList {
if (visible === this._visible) {
return;
}
this._visible = visible;
let fabs = this._fabs;
let i = 1;
if (visible) {
fabs.forEach(fab => {
setTimeout(() => fab.setElementClass('show', true), i * 30);
nativeTimeout(() => fab.setElementClass('show', true), i * 30);
i++;
});
} else {
fabs.forEach(fab => fab.setElementClass('show', false));
}
this._visible = visible;
this.setElementClass('fab-list-active', visible);
}
setElementClass(className: string, add: boolean) {
this._renderer.setElementClass(this._elementRef.nativeElement, className, add);
}
}

View File

@ -184,7 +184,7 @@ export class UIEventManager {
}
function listenEvent(ele: any, eventName: string, zoneWrapped: boolean, option: any, callback: any): Function {
let rawEvent = ('__zone_symbol__addEventListener' in ele && !zoneWrapped);
let rawEvent = (!zoneWrapped && '__zone_symbol__addEventListener' in ele);
if (rawEvent) {
ele.__zone_symbol__addEventListener(eventName, callback, option);
return () => ele.__zone_symbol__removeEventListener(eventName, callback);