Skip to content

Commit 47e1e17

Browse files
committed
fix(fab): not using change detection
fixes #8424
1 parent 28661f6 commit 47e1e17

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

src/components/fab/fab.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { Ion } from '../ion';
55

66
import { UIEventManager } from '../../util/ui-event-manager';
77
import { isTrueProperty } from '../../util/util';
8+
import { nativeTimeout } from '../../util/dom';
89

910
/**
1011
* @name FabButton
@@ -126,14 +127,13 @@ export class FabButton extends Ion {
126127
*/
127128
@Directive({
128129
selector: 'ion-fab-list',
129-
host: {
130-
'[class.fab-list-active]': '_visible'
131-
}
132130
})
133131
export class FabList {
134132
_visible: boolean = false;
135133
_fabs: FabButton[] = [];
136134

135+
constructor(private _elementRef: ElementRef, private _renderer: Renderer) { }
136+
137137
@ContentChildren(FabButton)
138138
set _setbuttons(query: QueryList<FabButton>) {
139139
let fabs = this._fabs = query.toArray();
@@ -150,18 +150,23 @@ export class FabList {
150150
if (visible === this._visible) {
151151
return;
152152
}
153+
this._visible = visible;
153154

154155
let fabs = this._fabs;
155156
let i = 1;
156157
if (visible) {
157158
fabs.forEach(fab => {
158-
setTimeout(() => fab.setElementClass('show', true), i * 30);
159+
nativeTimeout(() => fab.setElementClass('show', true), i * 30);
159160
i++;
160161
});
161162
} else {
162163
fabs.forEach(fab => fab.setElementClass('show', false));
163164
}
164-
this._visible = visible;
165+
this.setElementClass('fab-list-active', visible);
166+
}
167+
168+
setElementClass(className: string, add: boolean) {
169+
this._renderer.setElementClass(this._elementRef.nativeElement, className, add);
165170
}
166171

167172
}

src/util/ui-event-manager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ export class UIEventManager {
184184
}
185185

186186
function listenEvent(ele: any, eventName: string, zoneWrapped: boolean, option: any, callback: any): Function {
187-
let rawEvent = ('__zone_symbol__addEventListener' in ele && !zoneWrapped);
187+
let rawEvent = (!zoneWrapped && '__zone_symbol__addEventListener' in ele);
188188
if (rawEvent) {
189189
ele.__zone_symbol__addEventListener(eventName, callback, option);
190190
return () => ele.__zone_symbol__removeEventListener(eventName, callback);

0 commit comments

Comments
 (0)