Skip to content

Instantly share code, notes, and snippets.

View jtcrowson's full-sized avatar

John Crowson jtcrowson

View GitHub Profile
// -- error.actions.ts --
export class LaunchErrorModal implements Action {
readonly type = ErrorActions.LaunchErrorModal;
}
// -- error.effects.ts --
@Effect({ dispatch: false })
launchErrorModal$: Observable<Action> = this.actions$.pipe(
ofType<LaunchErrorModal>(ErrorActions.LaunchErrorModal),
tap(() => this.dialog.open(ErrorModalComponent))
// -- error.actions.ts --
export class LaunchErrorModal implements Action {
readonly type = ErrorActions.LaunchErrorModal;
}
export class MarkErrorModalAsOpen implements Action {
readonly type = ErrorActions.MarkErrorModalAsOpen;
}
export class CloseErrorModal implements Action {
import { Component } from '@angular/core';
import { MatDialog } from '@angular/material';
@Component({
selector: 'dialog-overview-example',
template: `<a (click)="openDialog()">Open Dialog</a>`
})
export class DialogOverviewExample {
constructor(public dialog: MatDialog) {}
@jtcrowson
jtcrowson / auth-guard.service.ts
Created March 7, 2019 22:49
auth-guard.service.ts from version 7.3.0 of ngrx/platform
// NgRx v7.3.0
@Injectable({
providedIn: 'root',
})
export class AuthGuard implements CanActivate {
constructor(private store: Store<fromAuth.State>) {}
canActivate(): Observable<boolean> {
return this.store.pipe(
select(fromAuth.getLoggedIn),
@jtcrowson
jtcrowson / auth-guard.service.spec.ts
Created March 7, 2019 22:52
auth-guard.service.spec.ts from version 7.3.0 of ngrx/platform
// NgRx v7.3.0
describe('Auth Guard', () => {
let guard: AuthGuard;
let store: Store<any>;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
StoreModule.forRoot({
...fromRoot.reducers,